UITextView becomeFirstResponder 无法正常工作
Posted
技术标签:
【中文标题】UITextView becomeFirstResponder 无法正常工作【英文标题】:UITextView's becomeFirstResponsder not working proprly 【发布时间】:2011-12-29 15:20:58 【问题描述】:我有一个UIView
和一个UITextView
和UITextField
作为子视图。我希望键盘在textFieldShouldReturn
通话时自动出现。
- (BOOL)textFieldShouldReturn:(UITextField *)textField
[textField resignFirstResponder];
[textView becomeFirstResponder];
return YES;
但这不起作用并且由于某种原因,它会在文本视图的下一行显示带有光标的键盘。我试图在 textview 中设置文本 nil 但它会自动调用 textDidChange
方法并且光标在没有任何文本的情况下移动到新行。
同样的技术适用于UITextField
,它也适用于 ios 5.0,但如何在 iOS 4.3 中解决此问题。如果您还有其他选择,请告诉我。
我是否遗漏了一些明显的东西?
【问题讨论】:
你能显示更多的代码吗?此外,如果您使用 Storyboard,我相信有一种方法可以在视图首次出现时选择 UITextView,这应该会调出键盘,因此您不必手动操作。 添加到 Kinetic 的评论中,Storyboard 项目只能为 iOS 5 正确编译,因此这可能是一个问题。如果没有,也许您在 UITextView 委托方法中做了一些时髦的事情?发布更多代码以获得更具体的帮助,因为您发布的块似乎不是问题。 【参考方案1】:iOS 中有一个已知错误,即在同一个运行循环中辞职并成为第一响应者。试试下面的
[textField resignFirstResponder];
[textView performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0];
【讨论】:
顺便说一句,我认为你之前不必调用resignFirstResponder,我认为becomeFirstResponder就足够了。以上是关于UITextView becomeFirstResponder 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
当 UITextView 的文本超出 1 行时展开 UITextView 和 UITableView
选择另一个 UITextView 时,如何阻止 UITextView 退出第一响应者/关闭键盘?
从 UIView 中的 UITextView 复制文本后,UITextView 更改为 UIWebDocumentView?