将光标移动到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;
}
}
凡shouldMoveCursor
是BOOL
变量你在控制器维护。
答
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];
嘿warrenm,thaks好友。这段代码真是太棒了。向你致敬。 – anshul 2012-03-02 14:31:37