カスタムキーボードが機能するようになりました。アプリに最後の仕上げをしたかったのですが、理解できません。テキスト入力の量を制限したい。私はこの方法を使用しました...
- (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;
}
だから、すべての助けに感謝します、私はこれがすぐに理解されることを望んでいます!