在iOS 6 GM的iPad上。我有6个UITextFields,3个UITextViews和一个触发popover / actionsheet的UIButton。
当我选择其中一个UITextFields或UITextViews时,会弹出键盘并显示光标,但我无法输入文字。如果我按下UIButton来显示弹出框,然后在它外面点击以解除它并返回到UITextFields或UITextViews,它们就可以工作。
我有UITextxxxx.delegate = self;为所有人设定。在我的.h文件中的xibs,UITextFieldDelegate和UITextViewDelegate中选中了“Enabled”和“User Interaction Enabled”以及:
- (BOOL)disablesAutomaticKeyboardDismissal {
return NO;
}
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
return YES;
}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
return YES;
}
- (IBAction)textFieldReturn:(id)sender {
[sender resignFirstResponder];
}
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
if (textView == notestextView){
[notestextView becomeFirstResponder];
}
if (textView == notestextViewTwo){
[notestextViewTwo becomeFirstResponder];
}
if (textView == notestextViewThree){
[notestextViewThree becomeFirstResponder];
}
return YES;
}
- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
return YES;
}
我甚至试过[xxxxxxx becomeFirstResponder];在viewDidLoad中。弹出键盘并在运行时将光标放在字段中,但在点击UIButton显示弹出框之前,我仍然无法输入。
任何人都知道为什么我不能输入字段以及为什么要使用popover“修复它”?
更新9月18日:我在我的应用中推了一个新视图,它只有一个带有textfield和textview的视图。代表们都已成立。相同的行为。键盘和光标出现,但没有输入。这排除了popovercontroller搞乱事情。
我强烈开始认为这是一个iOS 6错误。这与我在iOS 4和5上的应用程序的iPhone版本中的视图非常相似,我从来没有遇到过问题。 iPhone和iPad版本之间的唯一区别在于图像拾取器的呈现方式。您必须使用iPad的弹出窗口。这就是为什么我认为popover代表与它有关。
在iOS 6中实现我不知道的UITextFields和UITextViews之间是否存在任何根本区别?似乎不太可能。
如果它有助于我的应用流程如下:
带10个按钮的主视图
- 每个按钮通过导航控制器推送一个tableview
- tableviews推送详细信息视图 - textfields和textviews展示上述行为
- tableview还有一个添加按钮,用于推送模态视图以添加新项目 - textfields和textview展示上述行为
答案 0 :(得分:38)
这最初是在iOS 5上构建的iPhone应用程序。为了使其成为iPad应用程序,我只是复制了项目并将所有.xibs
升级到iPad版本。我不知道这是不是一个bug,或者它是否与升级到iOS 6有关,但这样做会让MainWindow.xib
混淆。
在MainWindow xib中,我输入"MainViewController"
作为标题(以前是空白的。)
并检查"Visible at Launch"
。即使它在发布时已经可见,但没有检查过的东西。
现在我的所有文字观看和文字字段都有效。
答案 1 :(得分:13)
我遇到了同样的问题,请确保应用代表有一个[self.window makeKeyAndVisible]
。这解决了我。
答案 2 :(得分:2)
对我来说,你的解决方案不起作用,所以我找到了另一个。
我正在使用Revmob广告,因此在启动应用时会加载全屏视图和横幅视图。 Revmob使用一些工作人员在所有viewcontrollers中显示相同的横幅,我认为这是问题。当我禁用revmob时,我可以在文本字段中添加文本。
答案 3 :(得分:2)
这显然是iOS 6中的错误。只需将[searchBar becomeFirstResponder];
放入searchBarTextDidBeginEditing
方法:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
if (!self.window.isKeyWindow) {
[self.window makeKeyAndVisible];
}
}
此解决方案适合我。
答案 4 :(得分:0)
这些解决方案对我不起作用,但在我删除~/Library/Developer/Xcode/DerivedData/AppName
处的派生数据文件夹后,它确实有效。
答案 5 :(得分:0)
为了澄清其他答案,您无法将文本输入到未设置为关键窗口的窗口。大多数应用程序只使用一个窗口,或者在其他窗口上没有文本输入,所以永远不会遇到这个问题。
处理多个窗口时,确保在切换焦点时resignKeyWindow
+ makeKeyWindow
,非常重要的是,之后恢复关键窗口!
答案 6 :(得分:0)
在dispatch_async(dispatch_get_main_queue(),^{});