0

私はiPhone用のXcode 4.3ターゲットiOS5でこれに取り組んでいます。

シンプルなボタン操作を使用してビュー A からセグエされたビュー B があります。ビュー B にはテキスト フィールドがあり、このテキスト フィールドの入力を検証する必要があります。検証ルールは単純です。テキスト フィールドが空の場合、textFieldShouldEndEditing は NO を返します。コードは次のとおりです。

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    if (![textField.text length]) {
        return NO;
    }
    return YES;
}

これはうまくいきます。ただし、何も入力せずに「戻る」ボタンを押すと (ビュー コントローラーがポップされます)、ビュー A に戻り、ビュー A でもう一度ボタンを押してビュー B に移動すると、ビュー B は完全に無効になり、私はテキストフィールドでは何も編集できません。これは、検証が実装されていないか、常に YES を返す場合には当てはまりません。私も何かを入力してみましたが、textFieldShouldEndEditing は常に NO を返します。

コードをトレースすると、コントローラーがポップした場合に textFieldShouldEndEditing も起動されることがわかります。問題は、textFieldShouldEndEditing を YES または NO に設定する Thins と関係があると思いますが、完全に混乱しました。

助けてください...

4

1 に答える 1

0

最初に、View Controller が最上位の View Controller であるかどうかを確認してください。

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
    if (self == self.navigationController.topViewController)
        if (textField == self.confirmationCodeField)
            if (textField.text.length < kAuthCodeMinLength)
                return NO;

    return YES; // default
}
于 2012-08-16T10:11:57.767 に答える