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 实现中,您可以设置一个标志,您可以在键盘WillShow 方法的实现中读取该标志——键盘通知在文本字段或文本视图通知之后发送。

- (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 回答