UITextView作为自己的委托意味着无限循环

Jon*_*an. 5 iphone delegates objective-c ipad ios

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

[SATextView awakeFromNib](SATextView是我的UITextView的子类)中,我做到了[self setDelegate:self];.当我按下textview开始编辑时,所有内容都冻结并最终停止,并且该回溯显示存在无限循环.

如果我实现所有委托方法,只有一个或没有,这没关系.如果这些方法是空的也没关系.

为什么会导致无限循环?只有使用UITextView(其他对象可以子类化并将委托设置为self,并且它不会出现此问题),似乎只会发生这种情况.我怎么能阻止它?或者是否有更好的方法让这个子类不能有连续的空格,

Kpm*_*y91 1

一个想法...您可以创建一个委托类,充当真正委托和 UITextView 之间的中间人(因为您可能需要在一段时间后设置委托)。因此,这个新类将实现委托协议,但它也将具有其自己的委托的属性,以便您可以转发 textView:shouldChangeTextInRange:replacementText:,并且仍然可以编辑 middleMan 类中的空格。