我想禁用“。”检测到用户已经在文本字段中输入了一个小数点后,键盘上的键。
因此启用密钥,直到在文本字段中检测到一个小数。
这样做的最佳方式是什么?
编辑: 我已经实现了以下方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if([string isEqualToString:@"."]) {
decimalCount++;
}
if(decimalCount > 1) {
[string stringByReplacingOccurrencesOfString:@"." withString:@""];
}
return YES;
}
然而,它并没有取代“。”十进制计数大于1时带“”。我缺少什么,以便用户仍然可以输入新的数字而不是小数点?
答案 0 :(得分:4)
您无法禁用该密钥。实现shouldtextField:shouldChangeCharactersInRange:replacementString:
委托方法来执行您需要的任何过滤。
无论如何都需要这样做,因为用户可能正在使用外部键盘或尝试将文本粘贴到文本字段中。
答案 1 :(得分:1)
很抱歉,如果我之前的回答误导你。逻辑错误。这似乎对我有用。
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
BOOL result = YES;
NSString *targetString = @".";
if([textField.text rangeOfString:targetString].location != NSNotFound) {
if([string isEqualToString:targetString]) {
result = NO;
}
}
return result;
}
希望它有所帮助。