关于键盘收起的一些小问题

pop 一个viewController时候键盘会发生闪现

假如有两个ViewController A 和 B(使用了UINavigationController), 在B中的TextField操作结束后,使用UIAlertView提醒再返回到A界面,键盘会闪现出来,即使写了[_textField resignFirstResponder] 和 [self.view endEditing:YES]; 也还是会发生。

如果直接在Button调用的方法内实现pop到A(不使用AlertView提醒), 就不会出现这种情况.

解决方法:
1.这个问题就是因为键盘收起是有动画的。而在键盘收起的动画开始的时候就pop了,键盘的动画没有执行完当然要在下一个vc里继续执行。所以要等键盘完全收起之后再pop或者push。直接dispatch_after个0.5秒左右再执行pop或者push。至于为什么用0.5秒,可能因为系统键盘收起的duration再0.5内会执行完毕。。

//或者等键盘动画结束后再弹出AlertView
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
         [alert show];
});

2.添加UITextFieldDelegate,并使alert调用出来的textField的delegate = self;最后在alert的点击事件处添加
[alertView textFieldAtIndex:buttonIndex]]resignFirstResponder];

3.由原因是alertview关闭影响了系统其他的动画导致的。要么延迟调用,或者自定义一个alertview。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容