我在一个屏幕上有3个视图,有不同的组件,如表格和按钮,当我尝试用下面的代码解雇键盘时,当我点击包含textView的视图时,它不会被忽略(这就是什么我需要! ) 。但是,当我点击其他一个视图时,它会解散。
下图显示了我的视图,而scrollview中的最后一个视图是包含textView的视图。
尽管录制了视图,但如何让键盘解除。
-(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];
}
答案 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
这样可以节省时间 希望这会对你有所帮助