UItextView在textview外部轻击键盘

时间:2012-05-16 04:02:33

标签: ios uiview uitextview uikeyboard

我有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

帮助如何做到这一点

2 个答案:

答案 0 :(得分:5)

尝试

  

[self.view endEditing:YES];

而不是辞职第一响应者。这应该可以解决问题。 有什么奇怪的是为什么标准方法不起作用......

答案 1 :(得分:2)

您必须在UITextViewDelegatedetailsTextView.delegate = self中添加viewDidLoad,或者在初始化详细信息文章视图的任何商品中添加{{1}} ..我希望这可以解决您的问题......