Cocos2dのテキストフィールドに固定文字制限を課すにはどうすればよいですか?
3 に答える
UITextField の最大文字数を修正するには、UITextField デリゲート メソッドを実装してtextField:shouldChangeCharactersInRange
、ユーザーが固定長を超えて文字列を編集しようとした場合に false を返すようにすることができます。
//Assume myTextField is a UITextField
myTextField.delegate = self;
//implement this UITextFiledDelegate Protocol method in the same class
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ([textField.text length] > kMaxTextFieldStringLength)
return NO;
else
return YES;
}
ユーザーがバックスペースを使用できるようにするには、次のようなコードを使用する必要があります (バックスペースを押すと、range.length はゼロになります)。
myTextField.delegate = self;
//implement this UITextFiledDelegate Protocol method in the same class
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.text.length >= 10 && range.length == 0)
return NO;
return YES;
}
上記の例は、ユーザーがテキスト フィールドの末尾 (最後の文字) を編集している場合にのみ機能します。入力テキストの実際の長さ (ユーザーが編集しているカーソル位置に関係なく) を確認するには、次を使用します。
myTextField.delegate = self;
//implement this UITextFiledDelegate Protocol method in the same class
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (range.location > kMaxTextFieldStringLength)
return NO;
else
return YES;
}