先上代码:
-(void) textFieldDidBeginEditing:(UITextField *)textField
{
NSLog(@"%@",textField.selectedTextRange);
UITextPosition *endDocument = textField.endOfDocument;//获取 text的 尾部的 TextPositext
UITextPosition *end = [textField positionFromPosition:endDocument offset:0];
UITextPosition *start = [textField positionFromPosition:end offset:-textField.text.length];//左-右+
textField.selectedTextRange = [textField textRangeFromPosition:start toPosition:end];
}
不要在textFieldShouldBeginEditing里面实现,因为endDocument取出来为nil.
在textFieldDidBeginEditing里面实现
另外可以利用shouldChangeCharactersInRange实现补全选中的功能
哦,如果反复点击textfiled出现第一次选中,第二次选中的状态的话,如果想一直被选中
textFieldShouldEndEditing
中实现
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
UITextPosition *beginDocument = textField.beginningOfDocument;
UITextPosition *end = [textField positionFromPosition:beginDocument offset:0];
UITextPosition *start = [textField positionFromPosition:beginDocument offset:0];//左-右+
textField.selectedTextRange = [textField textRangeFromPosition:start toPosition:end];
return YES;
}
ps:
[textField performSelector:@selector(selectAll:) withObject: textField];
也可以有选中效果,至于效果,因需求而异