1

少し問題があります。オブジェクトのプロパティを設定する私の TableView には 2 つの textFields があります。そうするために、文字列が実際にオブジェクトに設定される前に、ユーザーに textField に何かを書き込むように強制したいと考えています。だから基本的に簡単な([textField.text length] > 0)こと。しかし、ユーザーが2つのテキストフィールドの両方に文字列を書き込んで、最終的に「完了」ボタンを有効にする必要があることを望みます。UITextFieldDelegate以前にこれを解決しましたが、次の方法でテキスト フィールドを 1 つだけ使用しました。

- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        NSString *newText = [theTextField.text stringByReplacingCharactersInRange:range withString:string];
        self.doneBarButton.enabled = ([newText length] > 0);
        return YES;
    }

新しい問題に対する私の解決策なので、2 つの textFields を使用すると、次のようになります。

- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *newText = [theTextField.text stringByReplacingCharactersInRange:range withString:string];

    if ([theTextField.placeholder isEqualToString:@"textField1"]) {
        if ([theTextField.text length] > 0) {
            enabledVokabel = YES;
        } else {
            enabledVokabel = NO;
        }
    }
    if ([theTextField.placeholder isEqualToString:@"textField2"]) {
        if ([theTextField.text length] > 0) {
            enabledUebersetung = YES;
        } else {
            enabledUebersetung = NO;
        }
    }

    self.doneBarButton.enabled = (enabledVokabel && enabledUebersetung);
    return YES;
}

したがって、両方の textFields (textField1 と textField2) がテキストで満たされているときに、doneBarButton を有効にしたいと考えています。しかし、ユーザーがdoneBarButtonに書いたばかりのテキストを削除した場合、textFieldsが空になるとすぐに無効になるようにしたいのです。そのようには機能しません。解決策はありますか?それとも、それを解決するためのより良い方法ですか?

4

2 に答える 2

2

interfacebuilder で変更された値を、ビューにある任意のクラスの IBAction メソッドに接続するだけです。または、次のコードで実行できます。

[textField addTarget:self 
              action:@selector(myIBActionMethod:) 
    forControlEvents:UIControlEventEditingChanged];

入力の長さを確認します。

両方のテキストフィールドを同じメソッドに接続し、両方に IBOutlets がある場合は、呼び出されるたびに両方のテキストフィールドの長さを確認できます。

于 2013-10-13T16:15:38.890 に答える
0

私は両方の参照を保持したいと思いUITextViewsます.-

IBOutlet UITextView *textView1;
IBOutlet UITextView *textView2;

に適切にリンクされていますxib/storyboards。また、私はむしろ使用したい

- (void)textViewDidChange:(UITextView *)textView

折り返し電話。shouldChangeCharactersInRange docs によると、実際にテキストを変更する前にこのメソッドが呼び出されているようです。

条件としては、enabledこんな感じです。

self.doneBarButton.enabled = [textView1.text length] > 0 && [textView2.text length] > 0;
于 2013-10-13T11:55:33.737 に答える