在UITextView上调用UIKeyboard方法,而不是在UITextFields上调用
问题描述:
我在UITextView
上查看底部的注释。从页面底部开始,每当有人编辑它时,都会调用一个方法来移动页面的视图,以便您仍然可以看到评论框。我的问题是,当用户正在编辑UITextFields
时,同样的方法也会被调用。在UITextView上调用UIKeyboard方法,而不是在UITextFields上调用
这是我的。首先我宣布一个通知:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:self.view.window];
然后,该方法本身
- (void)keyboardWillShow:(NSNotification *)notif{
...
}
我首先想到的是添加一个条件,检查,看看如果对象是一个TextView,然后才执行代码。但是由于我没有将对象传递给方法,是否有告诉方法我正在处理的对象类型
答
文本字段和文本视图也会发送通知。在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);
}
'self.sender'正在寻找一个变量类变量,而不是你传递给函数的参数。这是你的意图吗? – BloonsTowerDefence 2012-07-17 15:02:04
我不确定你的意思。发件人(也许这是一个很差的选择名称),只是我在视图控制器的.h文件中声明的属性。这不适合你吗?我测试了它,它对我来说确实很好。 – rdelmar 2012-07-17 15:16:22
textview一个不适合我...为什么你有参数作为TextView的文本框(我已经尝试过这两种方式,但没有运气)。 – BloonsTowerDefence 2012-07-17 15:35:29