网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 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的最上方;在输入框不在键盘覆盖的区域时,是不需要滚动的。这样的处理,将是更满意的结果。
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/24 22:46:59