Fork me on GitHub

UITextField点击选中文字

1、先创建UITextField

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor greenColor];
    
    
    UITextField *TextF = [[UITextField alloc] initWithFrame:CGRectMake(10, 150, 200, 40)];
    
    TextF.borderStyle = UITextBorderStyleRoundedRect;
    TextF.text = @"11";
    TextF.delegate = self;
    [self.view addSubview:TextF];
    
    [TextF becomeFirstResponder];
    
    
    
}

 2、不要在textFieldShouldBeginEditing里面实现,因为endDocument取出来为nil.

在textFieldDidBeginEditing里面实现

-(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];
}

 

3、另外可以利用shouldChangeCharactersInRange实现补全选中的功能

哦,如果反复点击textfiled出现第一次选中,第二次选中的状态的话,如果想一直被选中

 

- (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];
也可以有选中效果,至于效果,因需求而异

  

textFieldShouldEndEditing

中实现

posted @ 2017-05-12 23:30  极度恐慌_JG  阅读(634)  评论(0编辑  收藏  举报