永发信息网

IOS键盘位置问题

答案:2  悬赏:10  手机版
解决时间 2021-02-19 11:54
不知道为什么,我MINI的键盘位置比原来往上了一点,很挡视线,求助哇
最佳答案
长按右下角取消键盘键 拖动手指到那其它选项
全部回答
如果屏幕中的内容项目比较多,它就可能覆盖住文本输入框之类的对象。你必须调整你的内容,使得输入框保持可见。 你会想到哪些处理方法呢? 第一种, 临时调整窗口中各个视图的大小,使得键盘从下向上占领的区域空白。键盘的高度(keyboard.size.height)是一定的,将视图中所有内容所在区域的y值减小到y-keyboard.size.height。 该方法有个局限,如果所有内容之和大于窗口减去键盘高度的话,该方法将不能用。 第二种, 将窗口中所有视图嵌入进一个滚动视图对象(uiscrollview)中。在键盘出现时,你将输入框滚动到合适的位置,调整一下滚动视图的内容区域。 这些操作通过一个通知uikeyboarddidshownotification去实现的,逻辑过程如下: 1、根据通知的字典信息userinfo得到键盘的size。 2、根据键盘的size中的height值,调整滚动视图内容底部的inset。 3、滚动目标视图即文件输入框进入视图中。 简要的代码如下: 1、实现两个委托方法,用于指定输入框对象。 - (void)textfielddidbeginediting:(uitextfield *)textfield { activefield = textfield; } - (void)textfielddidendediting:(uitextfield *)textfield { activefield = nil; } 2、注册通知的观察者 - (void)registerforkeyboardnotifications { [[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(keyboardwasshown:) name:uikeyboarddidshownotification object:nil]; [[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(keyboardwillbehidden:) name:uikeyboardwillhidenotification object:nil]; } 将这个方法放在viewdidappear中调用。 同时也要写一个removeobserver放在viewwilldisappear中调用。 3、实现键盘显示通知的selector中的方法 // called when the uikeyboarddidshownotification is sent. - (void)keyboardwasshown:(nsnotification*)anotification { nsdictionary* info = [anotification userinfo]; cgsize kbsize = [[info objectforkey:uikeyboardframebeginuserinfokey] cgrectvalue].size; uiedgeinsets contentinsets = uiedgeinsetsmake(0.0, 0.0, kbsize.height, 0.0); scrollview.contentinset = contentinsets; scrollview.scrollindicatorinsets = contentinsets; // if active text field is hidden by keyboard, scroll it so it's visible // your application might not need or want this behavior. cgrect arect = self.view.frame; arect.size.height -= kbsize.height; if (!cgrectcontainspoint(arect, activefield.frame.origin) ) { cgpoint scrollpoint = cgpointmake(0.0, activefield.frame.origin.y-kbsize.height); [scrollview setcontentoffset:scrollpoint animated:yes]; } } 4、实现键盘消失通知的方法 // called when the uikeyboardwillhidenotification is sent - (void)keyboardwillbehidden:(nsnotification*)anotification { uiedgeinsets contentinsets = uiedgeinsetszero; scrollview.contentinset = contentinsets; scrollview.scrollindicatorinsets = contentinsets; } 这个方法调整内容底部的inset的值使得输入框不被键盘区域屏蔽的。还可以换种方法实现。 第三种, 扩展内容视图的高度,滚动文本输入框对象进内容视图。 将keyboardwasshown:重写。 - (void)keyboardwasshown:(nsnotification*)anotification { nsdictionary* info = [anotification userinfo]; cgsize kbsize = [[info objectforkey:uikeyboardframebeginuserinfokey] cgrectvalue].size; cgrect bkgndrect = activefield.superview.frame; bkgndrect.size.height += kbsize.height; [activefield.superview setframe:bkgndrect]; [scrollview setcontentoffset:cgpointmake(0.0, activefield.frame.origin.y-kbsize.height) animated:yes]; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
电视剧《箭在弦上》最后一集,荣石为什么把戒
请问株洲市住房商业贷款能不能转为公积金贷款
小船以船头垂直于河对岸的方向过河,河宽500
谁知道这是炸什么
数码宝贝第一部小丑皇出场的背景音乐都说叫D
公务员可以当医生吗
杨芳西饼屋地址在哪,我要去那里办事
怎样能将360浏览器设置成打开一个对话框显示
【期盼的意思】一心期待期盼意思的词语是什么
对男朋友的好友产生好感怎么办
我的左手食指昨天被小刀划伤,有1厘米长的口
冷热刺激不疼的牙疼怎么回事
小先生私房牛肉面怎么去啊,有知道地址的么
女朋友爸妈不同意外地人,非要在他们市里买房
如图帮个忙 谢谢!
推荐资讯
GTalk 的聊天记录在哪里?
我想装修家,求装修刷墙的注意事项与步骤?
手机号码尾数是68好还是86好
七杀为夫
怎样才能委婉的和男朋友分手并且尽量不让他难
高中物理必修一的力学中有什么好的解题方法?
动漫 中年男人的头部画法?
因为要种树,需要祛除一小部分青草,求去除青
潮牛牛鲜馆在什么地方啊,我要过去处理事情
我的目标是一个月都不撸,现在已经算8天了,
高沙窝互通立交桥/G20(路口)怎么去啊,有知道
36.下图是沿北纬60°的1月份气温分布曲线和气
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?