在输入附属视图中使用UITextField显示键盘。
问题的原因是在输入附件视图(input accessory view)中显示带有UITextField的键盘。解决方法是在UIViewController的实现中添加一些方法,并将_textField变量添加到接口中。
在viewDidLoad方法中,调用reloadInputViews方法;在canBecomeFirstResponder方法中,返回YES;在inputAccessoryView方法中,创建一个UITextField对象,并设置其属性;在textFieldShouldReturn方法中,调用resignFirstResponder方法来隐藏键盘。
最后,将_textField变量添加到接口中,并将UIViewController实现为UITextFieldDelegate协议。
这是目前最简单的实现方法,与键盘的显示和隐藏动画非常流畅。感谢反馈,很高兴知道这个方法仍然有用,并且仍然可以流畅地工作。
问题的出现原因:
无法在没有可以成为第一响应者的对象的情况下调出键盘。
解决方法:
方法一:
1. 创建一个UIView的子类,并在其中实现UIKeyInput协议。
2. 在.h文件中声明属性:NSString *text和UIView *inputAccessoryView。
3. 在.m文件中实现协议中的方法:canBecomeFirstResponder、hasText、insertText和deleteBackward。
4. 在需要调出键盘的地方调用becomeFirstResponder方法。
方法二:
1. 在viewDidLoad方法中注册键盘事件的通知。
2. 在viewWillAppear方法中设置textField的frame。
3. 在keyboardWillShowNotification方法中实现textField的动画,让其与键盘动画同步。
4. 在keyboardWillHideNotification方法中实现textField的动画,让其返回原来的位置。
5. 调用becomeFirstResponder方法来触发动画。
问题原因:在输入辅助视图(input accessory view)中显示带有UITextField的键盘的问题。解决方法:将一个隐藏的UITextField添加为视图的子视图,然后调用[textfield becomeFirstResponder]方法。
解决方法代码示例:
UITextField * randofield = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; [self.view addSubview:randofield]; randofield.hidden = YES; [randofield becomeFirstResponder];
需要注意的是,UITextField必须作为视图的子视图才能实现该解决方法。