简要咨询咨询QQ网站导航网站搜索手机站点联系我们设为首页加入收藏 

ios键盘覆盖输入框的处理

来源:易贤网   阅读:1687 次  日期: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技术专栏

更多信息请查看技术文章
点此处就本文及相关问题在本站进行非正式的简要咨询(便捷快速)】     【点此处查询各地各类考试咨询QQ号码及交流群
上一篇:设置ios的uilabel动态高度方法
下一篇:设置iphone移动gprs上网教程
易贤网手机网站地址:ios键盘覆盖输入框的处理
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!