在多个视图之一中关闭键盘

时间:2017-11-29 00:09:02

标签: ios objective-c keyboard

我在一个屏幕上有3个视图,有不同的组件,如表格和按钮,当我尝试用下面的代码解雇键盘时,当我点击包含textView的视图时,它不会被忽略(这就是什么我需要! ) 。但是,当我点击其他一个视图时,它会解散。

下图显示了我的视图,而scrollview中的最后一个视图是包含textView的视图。

enter image description here

尽管录制了视图,但如何让键盘解除。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

UITouch * touch = [touches anyObject];

if(touch.phase == UITouchPhaseBegan) {
    [aTextField resignFirstResponder];
  }
}

此代码也未解雇:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

[[self view] endEditing:TRUE];

}

3 个答案:

答案 0 :(得分:1)

您需要在要单击的视图中添加点按手势: 因为你使用两个名为Your_view1和Your_view2的UIViews,而textfields是txt1和txt2。代码如下:

Your_view1:

UITapGestureRecognizer *singleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTapGesture:)];
singleTapGesture.numberOfTapsRequired = 1;
[Your_view1 addGestureRecognizer:singleTapGesture];

Your_view2:

UITapGestureRecognizer *singleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTapGesture:)];
singleTapGesture.numberOfTapsRequired = 1;
[Your_view2 addGestureRecognizer:singleTapGesture];

代表是:

-(void)handleSingleTapGesture:(UITapGestureRecognizer *)singleTapGesture{
    [txt1 resignFirstResponder];
    [txt2 resignFirstResponder];
}

答案 1 :(得分:0)

如果你的textView是可编辑的,点击它会使它成为第一个响应者。这就是键盘没有消失的原因。如果您不需要编辑textView,请将其可编辑属性设置为false

答案 2 :(得分:0)

管理键盘得到了我们大部分的开发时间,幸运的是我们有了这个library

的替代解决方案

无需在每个viewcontroller中编写多行代码,只需在didFinishLaunchingWithOptions

中添加一行代码
IQKeyboardManager.sharedManager().enable = true

这样可以节省时间 希望这会对你有所帮助