在UITextView上调用UIKeyboard方法而不是UITextFields

时间:2012-07-16 22:30:16

标签: objective-c nsnotifications

我在UITextView查看底部的评论。由于它位于页面底部,每当有人编辑它时,都会调用一个方法来移动页面视图,这样您仍然可以看到注释框。我的问题是,当用户编辑UITextFields时,也会调用相同的方法。

这就是我所拥有的。首先我宣布一个通知:

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

然后方法本身

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

...

}

我的第一个想法是添加一个条件,检查并查看对象是否是TextView,然后才执行代码。但是因为我没有将对象传递给方法,所以无论如何都要告诉方法我正在处理什么类型的对象

1 个答案:

答案 0 :(得分: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);
}