我有custom UIView
来自UIViewController
。该视图控制器可以呈现几个这样的视图中的一个。其中一个视图有UITextView
。当一个人开始在UITextView
中输入文字时,会显示键盘。但是,每当用户点击textview之外的任何地方时,我想解除键盘。由于UIViewController可以根据特定条件呈现多个UIViews
,我在UITextView
中封装了custom UIView
委托方法等,我使用custom UIView
中的通知进行了此操作喜欢
- (void)configureView
{
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(keyboardWillShow:) name:
UIKeyboardWillShowNotification object:nil];
[nc addObserver:self selector:@selector(keyboardWillHide:) name:
UIKeyboardWillHideNotification object:nil];
self.tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(didTapAnywhere:)];
}
-(void) keyboardWillShow:(NSNotification *) note {
[self addGestureRecognizer:self.tapRecognizer];
}
-(void) keyboardWillHide:(NSNotification *) note
{
[self removeGestureRecognizer:self.tapRecognizer];
}
-(void)didTapAnywhere: (UITapGestureRecognizer*) recognizer {
[self.detailsTextView resignFirstResponder];
}
然而,当调用didTapAnywhere时,即使resignfirstresponder绑定,键盘也不会被解雇。仅供参考,UITextView
的代表是custom UIView
。
帮助如何做到这一点
答案 0 :(得分:5)
尝试
[self.view endEditing:YES];
而不是辞职第一响应者。这应该可以解决问题。 有什么奇怪的是为什么标准方法不起作用......
答案 1 :(得分:2)
您必须在UITextViewDelegate
或detailsTextView.delegate = self
中添加viewDidLoad
,或者在初始化详细信息文章视图的任何商品中添加{{1}} ..我希望这可以解决您的问题......