我想阻止UITextField
中的光标向后移动。或者我需要阻止在已经输入的两个字符之间输入文本。
我怎么能这样做?
答案 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
属性的帮助下结束。