33

の変更を監視する方法について質問したところ、次のUITextField応答がありました。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)replacementStr {
    // Enable "Next" if you like what's entered in the replacementStr
}

これは機能しますが、置換文字列は文字列全体ではなく、追加されているものだけです。文字列全体を取得するにはどうすればよいですか?私の目的は、テキストフィールドの文字列が空白であるか、特定の数に等しいかどうかを確認することです(さまざまなシナリオで)。

この場合、フィールド内のテキストが変更される前にこのメソッドが呼び出されるため、テキストフィールドへのアウトレットは機能しないことに注意してください。

4

3 に答える 3

82
NSString * proposedNewString = [[textField text] stringByReplacingCharactersInRange:range withString:replacementString];
于 2012-07-23T01:02:19.437 に答える
14

スウィフト版

Swiftでは、textField'sテキストをにキャストする必要がありますNSString。以下が役に立ちます。

let newString = (textField.text! as NSString).replacingCharacters(in: range, with: string)
于 2016-02-25T02:10:02.483 に答える
1
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString * searchStr = [textField.text stringByReplacingCharactersInRange:range withString:string];

//    [textField2 setText:[textField1.text stringByReplacingCharactersInRange:range withString:string]];
    NSLog(@"%@",searchStr);
    return YES;
}
于 2013-04-01T13:00:06.060 に答える