UITextField光标后退运动

时间:2012-12-28 13:01:01

标签: iphone ios xcode uitextfield

我想阻止UITextField中的光标向后移动。或者我需要阻止在已经输入的两个字符之间输入文本。 我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

没有任何属性或方法可阻止用户在特定文本字段上使用放大镜。您可以尝试阻止字符串中的所有字符:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if(range.location < textField.text.length) return NO; else return YES;
}

经过一番研究,我发现了这个问题:Disable Magnifying Glass in UITextField。接受的答案的作者说有一种方法可以做到:

  

您还可以将userInteractionEnabled设置为NO,以便用户不能   点击该字段。手动调用becomeFirstResponder以使该字段   获得焦点,因为用户无法点击聚焦。

但是,正如我发现的那样,它不起作用,因为setUserInteractionEnabled:NO阻止文本字段成为第一个响应者。在第二次研究之后,我发现了另一个问题:Show UITextField keyboard on firstResponder even when userInteractionEnabled = NO MaxGabriel 用户声称他找到了实现目标的方法:

  

我所做的是将隐藏的文本字段添加到视图中,然后调用   成为第一个响应者。用户不知道该文本字段   存在。在文本字段的委托回调中,我接受了文本   用户输入并将其添加到UITextView(尽管您可以添加   文本到你想要的任何东西,就像你的UITextField一样   题)。我为可见文本关闭了userInteractionEnabled   视图。这会产生你想要的效果。

Stack Overflow是一个庞大的数据库,在问一个问题之前可能会对你有所帮助。

答案 1 :(得分:0)

要停止在UiTextField中输入文本,您应该使用uitextfield委托方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{
//Set tag for a textfield
    if(textField.tag==10)
    {
        NSUInteger newLength = [textField.text length] + [string length] - range.length;
        return (newLength < [textField.text length]) ? NO : YES;
    }
}

根据您的要求修改逻辑。 防止在两个字符之间输入文本使用NSRange和范围的文本字段文本小于文本字段文本长度然后返回否则在UITextField中不会输入文本

答案 2 :(得分:0)

你不能禁止插入符号移动,但你可以使用UITextFieldDelegate的方法textField:shouldChangeCharactersInRange:replacementString:来测试文本是否已在已输入的字符串中输入,如果不是,则手动更改文本字段中的文本并将插入符号移至在selectedTextRange协议的UITextInput属性的帮助下结束。