我有一个UITextField,我从其中一些按钮(它们是UI的一部分)输入(因此输入不是来自手机的虚拟键盘)。我想限制这些字符数量。我尝试使用shouldChangeCharactersInRange
,但它只适用于输入来自虚拟键盘的情况,并且如果输入来自UI上的按钮,则它不起作用。无论如何,我可以解决这个问题,无需编程每次我想要更新文本字段中的字符数?限制输入来自UI的UITextField中的字符数
谢谢 米哈伊Fonoage
我有一个UITextField,我从其中一些按钮(它们是UI的一部分)输入(因此输入不是来自手机的虚拟键盘)。我想限制这些字符数量。我尝试使用shouldChangeCharactersInRange
,但它只适用于输入来自虚拟键盘的情况,并且如果输入来自UI上的按钮,则它不起作用。无论如何,我可以解决这个问题,无需编程每次我想要更新文本字段中的字符数?限制输入来自UI的UITextField中的字符数
谢谢 米哈伊Fonoage
既然你是做编程,一旦用户点击UI相关的按钮更改的UITextField,你应该跟踪的字符数的使用计数器输入。 每次触摸相关的UI按钮时增加计数器的值。仅当计数器值为< =允许的最大编号时才更新文本字段。的字符。
检查文本字段的字符串属性的接受变更前的长度。
落实的UITextField委托方法shouldChangeCharactersInRange:
设置返回YES当字符串的长度小于你的最大计数的方法。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.text.length<3) {
return YES;
}
return NO;
}
这可以通过添加if语句进一步改进:&& range.length == 0.这将允许用户替换他们在极限时选择的字符。 – Joey 2014-05-02 21:25:05
显然这是唯一的方法。我希望可能有些方法可以帮助UITextFieldDelegate,但事实并非如此。 – 2010-01-26 17:59:53
相关的UITextFieldDelegate方法仅在实际文本字段被触摸并处于焦点状态时触发,即它处于活动状态。然而,在你的情况下,用户触摸其他按钮和应用程序更新基于该文本域。点击按钮后,您可以将焦点设置到文本框,然后触发相关代表方法,但我觉得这可能是一种迂回的方式来实现您想要的。 – 2010-01-26 18:09:29