【问题标题】:Moving the cursor to the beginning of UITextField将光标移动到 UITextField 的开头
【发布时间】:2011-05-09 23:29:09
【问题描述】:

有没有办法让光标位于UITextField 的开头?

当我显示带有内容的控件时,光标位于文本的末尾。我想把它移到开头。

【问题讨论】:

    标签: ios iphone uitextfield


    【解决方案1】:

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

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

    【讨论】:

    • 这个解决方案效果很好!确保您符合 UITextField 委托协议。 :)
    【解决方案2】:

    你正在与这个系统作斗争。 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 变量。

    【讨论】:

    • 嘿,warrenm,谢谢哥们。这段代码真是太棒了。向你致敬。
    【解决方案3】:

    为我工作

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      相关资源
      最近更新 更多