自 iOS 7 中的删除(退格)操作以来,我如何才能不接收 UITextView 委托消息?
Posted
技术标签:
【中文标题】自 iOS 7 中的删除(退格)操作以来,我如何才能不接收 UITextView 委托消息?【英文标题】:How can I not to receive UITextView's delegate message since delete(backspace) action in iOS7? 【发布时间】:2013-11-13 07:38:35 【问题描述】:我使用以下委托来接收任何键盘更改操作。到目前为止,直到 ios 6 都没有问题,但我在 iOS 7 中遇到了一个问题。
- (void)textViewDidChange:(UITextView *)textView
我的应用应该支持韩语。
我可以用简单的例子来解释问题,以便于理解。
[动作流程] 1) '러러' 现在显示在 UITextView 中。 2) 用户触摸删除键一次。 3) '러러' 改为 '럴'。
我希望只调用一次 [(void)textViewDidChange:(UITextView *)textView]。它在 iOS 6 下运行良好!
然而,在 iOS 7 中,委托被调用 三次,就像该流程一样
'러러' --> '러' '러' --> 空 空 --> '럴'
我的应用程序正在仔细处理委托以控制 UITextView 的文本内容。因此,我不想收到有关中间步骤的委托消息。
简单地说,我真的很想使用 UITextView 及其委托,就像它在 iOS 6 下的工作方式一样。
【问题讨论】:
听起来像是 UITextView 的 bug,打开雷达,得到苹果工程师的反馈。radar.apple.com 您能说出您在代码中设置委托的位置吗? @sathiamoorthy 有一个视图控制器有一个 UITextView。 viewcontroller 设置为 UITextView 的委托。它还实现了 UITextView 的委托。 没有。我在问,是在 ViewDidLoad 还是在 cellForRowAtIndexPath 中。 【参考方案1】:您可以使用以下代码,
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(methodNothing)
name:UITextFieldTextDidChangeNotification
object:firstName];
您可以使用:UITextFieldTextDidBeginEditingNotification
或 UITextFieldTextDidEndEditingNotification
【讨论】:
别忘了移除观察者 通知对代表的工作方式相同。我需要忽略中间过程。以上是关于自 iOS 7 中的删除(退格)操作以来,我如何才能不接收 UITextView 委托消息?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 6 UITextField Secure - 如何检测退格清除所有字符?