1

私はかなり新しいプログラマーであり、いくつかの UITextfields で問題が発生しています。基本的に 2 つのテキスト フィールドがあり、そのうちの 1 つの文字数を特定の量に制限し、もう 1 つのフィールドには多くの文字数を許可したいと考えています。

これを推奨する投稿を見つけました:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{

   NSUInteger newLength = [[textField text] length] + [string length] - range.length;
   return (newLength > 2) ? NO : YES;

}

ただし、それは両方のテキスト フィールドに影響するようです。1 つのフィールドをターゲットにする方法がわかりません。

誰でも助けてもらえますか、また、1つのことですが、そのコードで何が起こっているのかがわかります-範囲まで。長さ、範囲は総文字数ですか?

4

1 に答える 1

1

ここでの問題は、このコードを含むオブジェクトが両方のテキストフィールドへのデリゲートであることです。それを解決する2つの方法。デリゲートとしての長さを気にしないテキストフィールドを追加しないか、shouldChangeCharactersInRangeメソッド中にフィールドを区別することをお勧めします。

質問範囲の 2 番目の部分は、テキスト フィールドで変更されている文字であり、以下で構成されます。変更する文字列の位置、変更される文字列の長さ。

私の個人的な好みは、テキストの長さが最大長を超えていて、削除しない場合は変更を拒否することです。

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

    if(textField == self.textfieldYouWantToLimitTheLengthOf){

        if(textField.text.length > 2 && ![string isEqualToString:@""]){

            return NO;
        }
    }
    return YES;
}
于 2012-09-18T11:09:55.710 に答える