我有一个 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/