Iphone 限制输入来自UI的UITextField中的字符数
我有一个UITextField,我从UI中的一些按钮获取输入(因此输入不会来自手机的虚拟键盘)。我想限制这个字符数。我尝试使用Iphone 限制输入来自UI的UITextField中的字符数,iphone,Iphone,我有一个UITextField,我从UI中的一些按钮获取输入(因此输入不会来自手机的虚拟键盘)。我想限制这个字符数。我尝试使用shouldchangeCharactersRange,但它只在输入来自虚拟键盘时起作用,如果输入来自UI上的按钮则不起作用。我是否可以解决这个问题,而不必在每次更新文本字段时以编程方式计算文本字段中的字符数 谢谢,, Mihai Fonoage在接受更改之前,请检查textField上字符串属性的长度 有一个属性,因为一旦用户单击UI上的相关按钮,您就可以通过编程方式对
shouldchangeCharactersRange
,但它只在输入来自虚拟键盘时起作用,如果输入来自UI上的按钮则不起作用。我是否可以解决这个问题,而不必在每次更新文本字段时以编程方式计算文本字段中的字符数
谢谢,,
Mihai Fonoage在接受更改之前,请检查textField上字符串属性的长度 有一个属性,因为一旦用户单击UI上的相关按钮,您就可以通过编程方式对UITextField进行更改,因此您应该跟踪使用计数器输入的字符数。
每次触摸相关UI按钮时,增加计数器的值。仅当计数器值为时更新textfield实现UITextField委托方法shouldChangeCharactersRange: 当字符串长度小于最大计数时,将该方法设置为返回YES
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.text.length<3) {
return YES;
}
return NO;
}
-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串{
如果(textField.text.length显然这是唯一的方法。我希望UITextFieldDelegate中的某些方法能有所帮助,但事实并非如此。只有当触摸到实际的textField并处于焦点(即它处于活动状态)时,才会触发相关的UITextFieldDelegate方法。但是,在您的情况下,用户触摸了其他按钮和应用程序n基于此更新textfield。您可以在单击按钮时将焦点设置为textfield,然后触发相关的委托方法,但我觉得这可能是实现您想要的目标的一种迂回的方式。我确实相信,通过编程进行检查比使用此方法更容易。在返回rect后,我必须操作它这可以通过添加到if语句中进一步改进:&&range.length==0。这将允许用户在字符达到限制时替换他们选择的字符。