有什么方法可以观察 UITextField 的 selectedTextRange 的变化吗?
我尝试观察所有 UIControlEvents。但更改 selectedTextRange 不会触发 UIControlEvent。
另一个死胡同——UIKit 类不兼容 KVO。
然后是 UITextField TextDidChangeNotification。但这是针对文本的更改。
有任何想法吗?
子类UITextField
如下。
@interface WJTextField : UITextField
@end
@protocol WJTextFieldDelegate <UITextFieldDelegate>
- (void) textFieldDidChangeSelection: (UITextField *) textField;
@end
执行:
@implementation WJTextField
- (void) setSelectedTextRange: (UITextRange *) selectedTextRange
{
[super setSelectedTextRange: selectedTextRange];
if ([self.delegate respondsToSelector: @selector(textFieldDidChangeSelection:)])
[(id <WJTextFieldDelegate>) self.delegate textFieldDidChangeSelection: self];
}
@end
然后加-textFieldDidChangeSelection:
到您的文本字段的委托。
Caveat:仅当光标移动时才会发送该委托消息,not对于您必须实现的事件,在键入或粘贴文本时发送textField:shouldChangeCharactersInRange:replacementString:
,其中选择范围将设置为range.location + [string length]
(如果你返回YES
)或保持不变(如果您返回NO
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)