UITextView textViewShouldEndEditing / textViewDidEndEditing 未调用

Posted

技术标签:

【中文标题】UITextView textViewShouldEndEditing / textViewDidEndEditing 未调用【英文标题】:UITextView textViewShouldEndEditing / textViewDidEndEditing not called 【发布时间】:2011-12-19 23:52:36 【问题描述】:

我的屏幕上有几个UITextFields 和UITextViews。

尽管结束UITextField 编辑的“官方”方法是触摸键盘上的 Done 键,而 UITextView 的“官方”方法是触摸外部 Done 按钮 - 而我两者都支持 - 我无法阻止用户通过简单地触摸另一个控件来切换到另一个文本字段或文本视图。

如果当前正在编辑的控件是UITextField,这可以正常工作。当用户触摸第二个控件时,会为当前文本字段调用TextFieldDidEndEditing:,我可以处理该字段中的数据。

但是,如果当前控件是 UITextView,当用户触摸另一个控件时,textViewShouldEndEditingtextViewDidEndEditing 都不会被调用。导致它们被调用的唯一方法是在触摸第二个控件时执行显式ResignFirstResponder,但这会导致键盘被关闭,因此新的触摸被有效地忽略(用户必须再次触摸新字段继续编辑)。

有没有办法让UITextView 在另一个控件被触摸时表现得像UITextField

【问题讨论】:

为我工作。你确定你设置了textView的委托吗?好的,如果它在您手动使用 resignFirstResponder 时有效,那么您可能有。 【参考方案1】:

在 textViewShouldEndEditing 和 textViewDidEndEditing 方法中放置一个 if-else 子句。

- (void)textViewDidBeginEditing:(UITextView *)textView

   if (textView = (your text view property)
   
      //do something
   

【讨论】:

以上是关于UITextView textViewShouldEndEditing / textViewDidEndEditing 未调用的主要内容,如果未能解决你的问题,请参考以下文章

UITextView 背景图像不适合 UITextView 框架的框架大小

当 UITextView 的文本超出 1 行时展开 UITextView 和 UITableView

选择另一个 UITextView 时,如何阻止 UITextView 退出第一响应者/关闭键盘?

从 UIView 中的 UITextView 复制文本后,UITextView 更改为 UIWebDocumentView?

UITextView 数据变化迅速

UITextView contentInset 在 iOS 7 上的 UITextView 中不起作用?