将光标移动到UITextField的开头

问题描述:

有没有办法让光标位于UITextField的开头?将光标移动到UITextField的开头

当我用内容显示控件时,光标放在字符串的末尾。我想把它移到开头。

你正在为这个系统打架。 UITextField没有任何公共属性来设置光标位置(实际上与当前选择的开始相关)。如果您可以改为使用UITextView,则以下委托方法将强制光标移至文本的开头。请注意用户不会期望这种行为,并且您应该仔细检查您的动机是否希望这样做。

- (void)textViewDidBeginEditing:(UITextView *)textView { 
    shouldMoveCursor = YES; 
} 

- (void)textViewDidChangeSelection:(UITextView *)textView { 
    if(shouldMoveCursor) 
    { 
     NSRange beginningRange = NSMakeRange(0, 0); 
     NSRange currentRange = [textView selectedRange]; 
     if(!NSEqualRanges(beginningRange, currentRange)) 
      [textView setSelectedRange:beginningRange]; 
     shouldMoveCursor = NO; 
    } 
} 

shouldMoveCursorBOOL变量你在控制器维护。

+0

嘿warrenm,thaks好友。这段代码真是太棒了。向你致敬。 – anshul 2012-03-02 14:31:37

UITextField符合UITextInput协议,该协议提供了可让您控制所选范围的方法。这工作在我的测试:

-(void)textFieldDidBeginEditing:(UITextField *)textField { 
    textField.selectedTextRange = [textField 
     textRangeFromPosition:textField.beginningOfDocument 
     toPosition:textField.beginningOfDocument]; 
} 
+0

该解决方案效果很好!确保你符合UITextField委托协议。 :) – 2016-08-19 10:23:38

作品对我来说

// Get current selected range , this example assumes is an insertion point or empty selection 
UITextRange *selectedRange = [textField selectedTextRange]; 
// Calculate the new position, - for left and + for right 
UITextPosition *newPosition = [textField positionFromPosition:selectedRange.start offset:3]; 
// Construct a new range using the object that adopts the UITextInput, our textfield 
UITextRange *newRange = [textField textRangeFromPosition:newPosition toPosition:newPosition]; 
// Set new range 
[textField setSelectedTextRange:newRange];