Uitextfield光标背部运动



我想防止UITextField中的光标背部移动。或者我需要防止在已经输入的两个字符之间输入文本。我该怎么做?

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

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

经过一些研究,我发现了这个问题:在Uitextfield中禁用放大镜。接受答案的作者说有一种方法:

您还可以将UserIntractionEnabled设置为no,以便用户无法 点击字段。呼叫beadfirstresponder手动,以便该领域 由于用户无法点击焦点,因此获得焦点。

但是,正如我发现的那样,它行不通,因为setUserInteractionEnabled:NO阻止文本字段成为第一响应者。在第二次研究之后,我发现了另一个问题:即使在UserInteractionEnabled = no时,也会在Firstresponder上显示Uitextfield键盘。 MaxGabriel 用户声称他找到了这样做的方法:

我要做的就是将隐藏的文本字段添加到视图中,然后致电 在上面成为Firstresponder。用户不知道这个文本字段 存在。在文本字段的代表回调中,我进行文本 用户输入并将其添加到UITEXTVIEW(尽管您可以添加 发短信给您想要的任何内容,例如像uitextfield一样 问题)。我关闭可见文本的UserInteractionEnabled 看法。这创造了您想要的效果。

堆栈溢出是一个巨大的数据库,在提出问题之前可能对您有所帮助。

用于停止在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

中输入文本。

您不能禁止Caret移动,但是您可以使用UITextFieldDelegate的方法textField:shouldChangeCharactersInRange:replacementString:进行测试,如果未在已经键入的字符串中键入文本,则可以手动更改文本,然后将carret移动到借助UITextInput协议的selectedTextRange属性结束。

最新更新