2010-01-26 41 views
4

我有一个UITextField,我从其中一些按钮(它们是UI的一部分)输入(因此输入不是来自手机的虚拟键盘)。我想限制这些字符数量。我尝试使用shouldChangeCharactersInRange,但它只适用于输入来自虚拟键盘的情况,并且如果输入来自UI上的按钮,则它不起作用。无论如何,我可以解决这个问题,无需编程每次我想要更新文本字段中的字符数?限制输入来自UI的UITextField中的字符数

谢谢 米哈伊Fonoage

回答

2

既然你是做编程,一旦用户点击UI相关的按钮更改的UITextField,你应该跟踪的字符数的使用计数器输入。 每次触摸相关的UI按钮时增加计数器的值。仅当计数器值为< =允许的最大编号时才更新文本字段。的字符。

+0

显然这是唯一的方法。我希望可能有些方法可以帮助UITextFieldDelegate,但事实并非如此。 – 2010-01-26 17:59:53

+0

相关的UITextFieldDelegate方法仅在实际文本字段被触摸并处于焦点状态时触发,即它处于活动状态。然而,在你的情况下,用户触摸其他按钮和应用程序更新基于该文本域。点击按钮后,您可以将焦点设置到文本框,然后触发相关代表方法,但我觉得这可能是一种迂回的方式来实现您想要的。 – 2010-01-26 18:09:29

0

检查文本字段的字符串属性的接受变更前的长度。

0

有一个textRectForBounds物业

+0

我相信这很容易做编程检查,然后使用此方法。返回后我将不得不操纵矩形。 – 2010-01-26 18:01:50

3

落实的UITextField委托方法shouldChangeCharactersInRange:

设置返回YES当字符串的长度小于你的最大计数的方法。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

if (textField.text.length<3) { 
    return YES; 
} 
return NO; 
} 
+0

这可以通过添加if语句进一步改进:&& range.length == 0.这将允许用户替换他们在极限时选择的字符。 – Joey 2014-05-02 21:25:05

相关问题