Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 限制输入来自UI的UITextField中的字符数_Iphone - Fatal编程技术网

Iphone 限制输入来自UI的UITextField中的字符数

Iphone 限制输入来自UI的UITextField中的字符数,iphone,Iphone,我有一个UITextField,我从UI中的一些按钮获取输入(因此输入不会来自手机的虚拟键盘)。我想限制这个字符数。我尝试使用shouldchangeCharactersRange,但它只在输入来自虚拟键盘时起作用,如果输入来自UI上的按钮则不起作用。我是否可以解决这个问题,而不必在每次更新文本字段时以编程方式计算文本字段中的字符数 谢谢,, Mihai Fonoage在接受更改之前,请检查textField上字符串属性的长度 有一个属性,因为一旦用户单击UI上的相关按钮,您就可以通过编程方式对

我有一个UITextField,我从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。这将允许用户在字符达到限制时替换他们选择的字符。