【问题标题】:UITextView's becomeFirstResponsder not working proprlyUITextView becomeFirstResponder 无法正常工作
【发布时间】:2011-12-29 15:20:58
【问题描述】:

我有一个UIView 和一个UITextViewUITextField 作为子视图。我希望键盘在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 委托方法中做了一些时髦的事情?发布更多代码以获得更具体的帮助,因为您发布的块似乎不是问题。

标签: iphone objective-c ios uitextview


【解决方案1】:

iOS 中有一个已知错误,即在同一个运行循环中辞职并成为第一响应者。试试下面的

[textField resignFirstResponder];
[textView performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0];

【讨论】:

  • 顺便说一句,我认为你之前不必调用resignFirstResponder,我认为becomeFirstResponder就足够了。
猜你喜欢
  • 1970-01-01
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 2016-09-01
  • 2012-07-11
  • 2018-04-08
相关资源
最近更新 更多