键盘和光标显示,但我不能在UITextFields和UITextViews内部input
在iOS 6 GM的iPad上。 我有6个UITextFields,3个UITextViews和一个触发popover / actionsheet的UIButton。
当我selectUITextFields或UITextViews之一,popup键盘和光标出现,但我不能input文字。 如果我按下UIButton来显示popup窗口,然后点击它以closures它并返回到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中。 popup键盘并将光标置于运行时的字段中,但是直到我点击UIButton来显示popup窗口,我仍然无法input。
任何人都知道为什么我不能在字段中input以及为什么煽动popover“修复它”?
更新9/18:我在我的应用程序中推出了一个新的视图,只是有一个文本框和一个文本视图的视图。 代表们都成立了。 同样的行为。 键盘和光标出现,但没有键入。 这就排除了popovercontroller与东西混杂。
我强烈地开始认为这是一个iOS 6的错误。 这几乎是我在iPhone 4和iOS 5的iPhone版本中所看到的相同的观点,我从来没有遇到过任何问题。 iPhone和iPad版本的唯一区别在于图像选取器的呈现方式。 你必须使用iPad的popup窗口。 这就是为什么我认为popover代表与之有关。
在我不知道的iOS 6中实现UITextFields和UITextViews之间有什么根本的区别? 似乎不太可能。
如果它帮助我的应用程序像这样stream动:
主视图与10个button
- 每个button通过导航控制器推动一个桌面视图
- tableviews推送一个细节视图 – textfields和textview显示上述行为
- tableview也有一个添加button,推动一个模态视图添加新项目 – 文本字段和textview显示上述行为
这原本是在iOS 5上构build的iPhone应用程序。为了使其成为iPad应用程序,我只复制了项目并将所有.xibs
升级到iPad版本。 我不知道这是否是一个错误,或者如果这是升级到iOS 6,但这样做,就像MainWindow.xib
东西了。
在MainWindow xib中,我在"MainViewController"
input了标题(以前是空白的)。
并检查"Visible at Launch"
。 即使它在启动时已经可见,也没有检查出什么东西。
现在,我所有的文本视图和文本字段的工作。
我遇到了同样的问题,确保应用程序委托有一个[self.window makeKeyAndVisible]
。 这为我解决了。
对我来说,你的解决scheme不起作用,所以我find了另外
我正在使用Revmob广告,以便在启动应用程序时加载全屏视图和横幅视图。 Revmob使用一些工作人员在所有viewcontrollers显示相同的横幅我认为这是问题。 当我禁用revmob时,我可以添加文本到我的文本框。
这显然是在iOS 6中的错误。只要把[searchBar becomeFirstResponder];
进入searchBarTextDidBeginEditing
方法:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar { if (!self.window.isKeyWindow) { [self.window makeKeyAndVisible]; } }
这个解决scheme适用于我。
这些解决scheme并不适合我,但是在我删除了~/Library/Developer/Xcode/DerivedData/AppName
的派生数据文件夹之后,它就起作用了。
为了澄清其他答案,您不能将文本input到未设置为关键窗口的窗口。 大多数应用程序只使用一个窗口,或没有额外的窗口上的文本input,所以从来没有遇到这个问题。
当处理多个窗口时,确保在切换焦点时resignKeyWindow
+ makeKeyWindow
,而且非常重要的是,以后还原关键窗口!
试试dispatch_async(dispatch_get_main_queue(),^{});
becomeFirstResponder dispatch_async(dispatch_get_main_queue(),^{});