Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将光标移动到UITextField的开头_Ios_Iphone_Uitextfield - Fatal编程技术网

Ios 将光标移动到UITextField的开头

Ios 将光标移动到UITextField的开头,ios,iphone,uitextfield,Ios,Iphone,Uitextfield,是否有办法使光标位于UITextField的开头 当我显示包含内容的控件时,光标将放置在文本的末尾。我想把它移到开头。你在这个问题上与系统抗争UITextField没有任何公共属性来设置光标位置(它实际上与当前选择的开头相关)。如果可以改用UITextView,则以下委托方法将强制光标指向文本的开头。只是要知道,用户不会期望这种行为,你应该仔细检查你想要这样做的动机 - (void)textViewDidBeginEditing:(UITextView *)textView { shou

是否有办法使光标位于
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
符合
uitexput
协议,该协议提供了允许您控制所选范围的方法。这在我的测试中起作用:

-(void)textFieldDidBeginEditing:(UITextField *)textField {
    textField.selectedTextRange = [textField
        textRangeFromPosition:textField.beginningOfDocument
        toPosition:textField.beginningOfDocument];
}
为我工作

// 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];

嘿,泰克兄弟。这个代码真是太棒了。向你致敬。这个解决方案非常有效!确保符合UITextField委托协议。:)