键盘和光标显示,但我不能在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(),^{});