use*_*195 1 iphone objective-c ipad
我目前正在限制用户写入超过4个字符的文本.
为此我正在使用这段代码
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString: (NSString *)string{
if ([textField.text length] == 4)
return NO;
else
return YES;
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,不允许用户写超过4个字符.
但是当我尝试删除现有的字符时.键盘删除选项不起作用.
如何解决这个问题呢
当调用shouldChangeCharactersInRange方法时,文本字段仍然具有旧值,因此如果其长度为4,则会被卡住.验证输入的更好方法是计算更改后字段中将包含的字符串,并检查它是否有效:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString: (NSString *)string{
NSString *newString = [textField.text stringByReplacingCharactersInRange:range
withString:string];
return [newString length] <= 4;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1642 次 |
| 最近记录: |