ios 键盘在弹出后无法点击

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios 键盘在弹出后无法点击相关的知识,希望对你有一定的参考价值。

TextField的window属性已经检测出不为nil,并且TextField是当前视图的第一响应者,但是在键盘弹出后点击任何键盘上的字符都不响应,xcode的模拟器,真机都测试过,均出现此问题,求助

参考技术A 最常用的方法就是通过触摸事件来控制键盘的隐藏,代码如下:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
[textFiled resignFirstResponder];

或者自定义触摸手势来控制键盘的隐藏,代码如下:

- (void)viewDidLoad

[super viewDidLoad];
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(keyboardHide:)];
//设置成NO表示当前控件响应后会传播到其他控件上,默认为YES。
tapGestureRecognizer.cancelsTouchesInView = NO;
//将触摸事件添加到当前view
[self.view addGestureRecognizer:tapGestureRecognizer];


-(void)keyboardHide:(UITapGestureRecognizer*)tap
[textFiled resignFirstResponder];
追问

并不是无法收回键盘,而是键盘弹出后无法输入,例如登录页面,点击登录名的输入框,弹出键盘,此时无法输入登录名,但是在这个情况下点击密码输入框,键盘就可以输入了,所以并不是您理解的键盘无法收回

解决移动端键盘弹出后,遮挡住表单的问题

监听resize事件,然后定位到input、textarea输入框,也可以理解为监听input或者textarea状态,当屏幕滚动到input或者textarea,上下居中。就可以解决键盘遮挡表单的问题了

window.addEventListener('resize', () =>
  if(document.activeElement.tagName === 'INPUT' ||
  	document.activeElement.tagName === 'TEXTAREA') 
  	  window.setTimeout(() => 
	    document.activeElement.scrollIntoViewIfNeeded();
      , 0);
  
);

以上是关于ios 键盘在弹出后无法点击的主要内容,如果未能解决你的问题,请参考以下文章

周记3——解决fixed属性在ios软键盘弹出后失效的bug

移动端点击文本框 键盘弹出解决访问

web页面移动端键盘弹出后对页面布局的影响

js-解决安卓手机软键盘弹出后,固定定位布局被顶上移问题

安卓弹出软键盘怎么把一部分布局顶上去

解决移动端键盘弹出后,遮挡住表单的问题