我刚刚得到了一个自定义键盘。我想对应用程序进行最后一次触摸,但我无法弄清楚。我想限制文本输入的数量。我用过这个方法......
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSLog(@"user is entering numbers");
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return (newLength > 8) ? NO : YES;
}
但它永远不会被调用。我可以在我的实际键盘上输入,文本限制为 8 个。但如果我在模拟器中使用我的自定义键盘,我可以永远输入数字。知道如何从我的自定义键盘调用此方法吗?谢谢!!
编辑
响应 Kjuly 的帮助。这是我的更多代码。
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
NSLog(@"textFieldDidBeginEditing");
if ([fahrenheit isFirstResponder])
{
self.currentTextField = self.fahrenheit;
celcius.text = @"";
kelvin.text = @"";
self.userIsEnteringANumber = NO;
}
else if ([celcius isFirstResponder])
{
self.currentTextField = self.celcius;
fahrenheit.text = @"";
kelvin.text = @"";
self.userIsEnteringANumber = NO;
}
else if ([kelvin isFirstResponder])
{
self.currentTextField = self.kelvin;
fahrenheit.text = @"";
celcius.text = @"";
self.userIsEnteringANumber = NO;
}
}
开始编辑时会调用此方法。但仍然只有在我使用键盘时才会调用 shouldChangeChararcterInRange 方法。我的 viewDidLoad 方法是
- (void)viewDidLoad
{
[super viewDidLoad];
[fahrenheit setText:@""];
[celcius setText:@""];
[kelvin setText:@""];
[fahrenheit setInputView:keyPad];
[celcius setInputView:keyPad];
[kelvin setInputView:keyPad];
fahrenheit.delegate = self;
celcius.delegate = self;
kelvin.delegate = self;
}
所以感谢大家的帮助,我希望尽快解决这个问题!