ios键盘覆盖输入框的处理
来源: 阅读:1068 次 日期:2014-12-08 13:45:35
温馨提示: 小编为您整理了“ios键盘覆盖输入框的处理”,方便广大网友查阅!

在一个多项输入界面上,会有多个uitextfield类型的输入框。为了滚动方面,我们会将他们一一添加到uitableview的cell中,从而组成一个可以上下滑动的数据输入界面。

但是字符输入是通过系统自动弹出软键盘来完成的,因此在选择屏幕底端的cell时,会被软键盘的区域所覆盖。

同样,正因为输入框是在uitableview的cell中,所以可以将所在的cell滚动到软键盘覆盖的区域之上的位置。使得我们能看到输入框。

现在,我们要实现这个操作过程。

我们可以简单的将该cell滚动到表视图的可见区域的最上方的位置。

uitableview提供了这个方法“scrolltorowatindexpath:atscrollposition:animated:”。作为第一反应者的输入框,可以它的委托方法- (void)textfielddidbeginediting:(uitextfield*)textfield

将其赋值一个变量lastedittextfield中。软键盘的出现和消失都注册到该视图控制器类中,并实现它的方法。这样,在uitextfield激活弹出键盘时,系统会自动提交一个软键盘弹出的通知。键盘弹出通知会调用一个方法。

该方法要实现的逻辑是根据lastedittextfield所在的位置点,得到操作的cell,再将此cell滚动到视图可见区域的最上方。

cgpoint pt =lastedittextfield.center;

pt = [self.tableview convertpoint:ptfromview:lastedittextfield.superview];

nsindexpath* indexpath = [self.tableviewindexpathforrowatpoint:pt];

[self.tableview scrolltorowatindexpath:indexpathatscrollposition:uitableviewrowanimationtop animated:yes];

这段代码中,最重要的是根据lastedittextfield.center的值,通过uiview的实例方法-(cgpoint)convertpoint:(cgpoint)point fromview:(uiview *)view 将它转成self.tableview的坐标体系下的值。再根据新坐标体系中lastedittextfield.center的值,通过uitableview的实例方法scrolltorowatindexpath:atscrollposition:animated:将该cell滚动到屏幕最上方。

在键盘消失时,系统会再发送一个通知,将屏幕恢复到原来的位置。

将输入框滚动到最上方,虽然能满足我们的输入可见要求。但是,如果能只滚动到软键盘之上方,而不是uitableview的最上方;在输入框不在键盘覆盖的区域时,是不需要滚动的。这样的处理,将是更满意的结果。

更多信息请查看IT技术专栏

更多信息请查看技术文章
手机网站地址:ios键盘覆盖输入框的处理
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map