我有一个 UITextField
的子类,例如:
@interface CustomTextField : UITextField
-(NSRange) getSelection;
@end
@implementation CustomTextField
-(NSRange) getSelection
{
UITextRange *selectedRange = [self selectedTextRange];
UITextPosition* selectionStart = selectedRange.start;
UITextPosition* selectionEnd = selectedRange.end;
const NSInteger position1 = [self offsetFromPosition:self.beginningOfDocument toPosition:selectionStart];
const NSInteger position2 = [self offsetFromPosition:self.beginningOfDocument toPosition:selectionEnd];
return NSMakeRange(position1, position2);
}
@end
但是每当我将光标放在文本字段中并调用 getSelection
方法时,selectedRange
总是 nil,所以 selectedTextRange
没有更新,为什么?当我添加 @synthesize selectedTextRange 时,属性会更新。那么继承有什么问题吗?
最佳答案
如评论中所述,确保您的 TextField 是第一响应者。如果不是,请在该字段上调用 becomeFirstResponder()
。我在 iOS 10 上有这个错误。从 iOS 11 开始,即使您的 textField 不是第一响应者,它也能正常工作。
关于ios - selectedTextRange 总是返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30855468/