1

Cocos2dのテキストフィールドに固定文字制限を課すにはどうすればよいですか?

4

3 に答える 3

5

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; 
}
于 2009-01-23T07:45:16.120 に答える
2

ユーザーがバックスペースを使用できるようにするには、次のようなコードを使用する必要があります (バックスペースを押すと、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; }

于 2009-08-19T06:02:34.390 に答える
1

上記の例は、ユーザーがテキスト フィールドの末尾 (最後の文字) を編集している場合にのみ機能します。入力テキストの実際の長さ (ユーザーが編集しているカーソル位置に関係なく) を確認するには、次を使用します。

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; 
}
于 2009-07-17T04:37:05.487 に答える