1

UITextView下部にコメント用のビューがあります。ページの下部にあるため、誰かが編集すると、メソッドが呼び出されてページの表示がシフトされ、コメントボックスが表示されたままになります。私の問題は、ユーザーが編集しているときに同じメソッドが呼び出されることUITextFieldsです。

これが私が持っているものです。最初に通知を宣言します:

[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(keyboardWillShow:) 
                                             name:UIKeyboardWillShowNotification 
                                           object:self.view.window];

次に、メソッド自体

- (void)keyboardWillShow:(NSNotification *)notif{

...

}

私が最初に考えたのは、条件を追加し、オブジェクトがTextViewであるかどうかを確認してから、コードを実行することでした。しかし、私はオブジェクトをメソッドに渡していないので、とにかく、私が扱っているオブジェクトのタイプをメソッドに伝えることはできますか?

4

1 に答える 1

2

テキスト フィールドとテキスト ビューも通知を送信します。textFieldShouldBeginEditing および textViewShouldBeginEditing 実装では、keyboardWillShow メソッドの実装で読み取ることができるフラグを設定できます。キーボード通知は、テキスト フィールドまたはテキスト ビュー通知の後に送信されます。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    self.sender = @"text field";
    return YES;
}


- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
    self.sender = @"text view";
    return YES;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(keyboardWillShow:) 
                                                 name:UIKeyboardWillShowNotification 
                                               object:self.view.window];

}

- (void)keyboardWillShow:(NSNotification *)notif{
    NSLog(@"%@",self.sender);
}
于 2012-07-16T23:10:45.870 に答える