Ios UITextField--观察对所选Extange的更改?
是否有任何方法可以观察UITextField的selectedTextRange的更改 我试着观察所有的事件。但是更改所选的extrange不会触发uicontrol事件 另一个死胡同——UIKit类不符合KVO 然后是UITextFieldTextDidChangeNotification。但这是对文本的修改Ios UITextField--观察对所选Extange的更改?,ios,text,uitextfield,selection,Ios,Text,Uitextfield,Selection,是否有任何方法可以观察UITextField的selectedTextRange的更改 我试着观察所有的事件。但是更改所选的extrange不会触发uicontrol事件 另一个死胡同——UIKit类不符合KVO 然后是UITextFieldTextDidChangeNotification。但这是对文本的修改 有什么想法吗?子类UITextField,如下所示 @interface WJTextField : UITextField @end @protocol WJTextFieldDel
有什么想法吗?子类
UITextField
,如下所示
@interface WJTextField : UITextField
@end
@protocol WJTextFieldDelegate <UITextFieldDelegate>
- (void) textFieldDidChangeSelection: (UITextField *) textField;
@end
@接口WJTextField:UITextField
@结束
@协议WJTextFieldDelegate
-(void)textFieldDidChangeSelection:(UITextField*)textField;
@结束
实施:
@implementation WJTextField
- (void) setSelectedTextRange: (UITextRange *) selectedTextRange
{
[super setSelectedTextRange: selectedTextRange];
if ([self.delegate respondsToSelector: @selector(textFieldDidChangeSelection:)])
[(id <WJTextFieldDelegate>) self.delegate textFieldDidChangeSelection: self];
}
@end
@实现WJTextField
-(无效)设置所选的扩展项:(UITextRange*)所选的扩展项
{
[超级设置SelectedExtange:SelectedExtange];
if([self.delegate respondsToSelector:@selector(textfielddichangeselection:)]))
[(id)self.delegate textfielddChangeSelection:self];
}
@结束
然后将-textfielddchangeselection:
添加到文本字段的委托中
警告:仅当光标移动时才会发送此委托消息,在键入或粘贴文本时不会发送此委托消息,对于那些您必须实现的事件,Field:ShouldChangeCharactersRange:replacementString:,其中选择范围将设置为
range.location+[字符串长度]
(如果返回YES
)或保持不变(如果返回NO
)。我只想指出,在键入或粘贴文本时确实会触发此操作。至少在iOS8中,我没有检查任何其他内容。