iphone - UITextView 作为自己的委托(delegate)意味着无限循环

标签 iphone objective-c ios ipad delegates

我有一个 UITextView 的子类,我想让它成为自己的委托(delegate)。这样我就可以覆盖 textView:shouldChangeTextInRange:replacementText: 方法,并防止输入连续的空格。

[SATextView awakeFromNib](SATextView 是我的 UITextView 的子类)中,我执行 [self setDelegate:self];。当我按下 textview 开始编辑时,一切都卡住并最终停止,回溯显示存在无限循环。

无论我实现所有委托(delegate)方法,只实现一个,还是不实现都没有关系。这些方法是否为空也无关紧要。

为什么会造成死循环?它似乎只有在使用 UITextView 时才会发生(您可以子类化其他对象并将委托(delegate)设置为自身,并且不会出现此问题)。我该如何阻止它?或者有没有更好的方法让这个子类不能有连续的空格,

最佳答案

一个想法...您可以制作一个委托(delegate)类作为真正的委托(delegate)和 UITextView 之间的中间人(因为您可能需要在一段时间后设置委托(delegate))。所以这个新类将实现委托(delegate)协议(protocol),但它也将有一个属性用于它自己的委托(delegate),这样你就可以转发 textView:shouldChangeTextInRange:replacementText:,并且仍然在你的 middleMan 类中完成编辑空格的工作。

关于iphone - UITextView 作为自己的委托(delegate)意味着无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11215444/

相关文章:

ios View Controller 保持在内存中

iphone - 我用的是CAEmitterLayer,但是app应该也支持iOS4.0,怎么办?

iphone - coreImage iOS 4.3.3 崩溃

iphone - 如何获取/设置 rootViewController?

objective-c - 在 block 中使用弱 obj 时崩溃

ios - 如何区分一个音乐文件与另一个

ios - iTunesConnect中的“Apple ID”是否与developer.apple.com中的“App ID”不同?

iphone - 确保将只读 plist 复制到应用程序构建目录的正确方法是什么?

objective-c - UISearchDisplayController 不在 searchResultsTableView 中显示结果

objective-c - Xcode 不断告诉我 NSDirectoryEnumerator 的使用是错误的。