我们在用键盘录入的时候,有可能会遮挡录入框,所以我们应调整UIView的位置,使其不被遮挡。我写了一个通用的方法可以解决这个问题:
​​1. [代码][C/C++]代码     
    - (void)moveView:(UITextField *)textField leaveView:(BOOL)leave  
    {  
        UIView *accessoryView = textField.inputAccessoryView;  
        UIView *inputview     = textField.inputView;  
          
        int textFieldY = 0;  
        int accessoryY = 0;  
        if (accessoryView && inputview)   
        {  
            CGRect accessoryRect = accessoryView.frame;  
            CGRect inputViewRect = inputview.frame;  
            accessoryY = 480 - (accessoryRect.size.height + inputViewRect.size.height);  
        }  
        else if (accessoryView)  
        {  
            CGRect accessoryRect = accessoryView.frame;  
            accessoryY = 480 - (accessoryRect.size.height + 216);  
        }  
        else if (inputview)  
        {  
            CGRect inputViewRect = inputview.frame;  
            accessoryY = 480 -inputViewRect.size.height;  
        }  
        else  
        {  
            accessoryY = 264; //480 - 216;  
        }  
          
          
        CGRect textFieldRect = textField.frame;  
        textFieldY = textFieldRect.origin.y + textFieldRect.size.height + 20;  
          
        int offsetY = textFieldY - accessoryY;  
        if (!leave && offsetY > 0)   
        {  http://www.huiyi8.com/vi/
            int y_offset = -5;  
              
            y_offset += -offsetY;  
              
            CGRect viewFrame = self.view.frame;  
              
            viewFrame.origin.y += y_offset;  
              
            [UIView beginAnimations:nil context:NULL];  
            [UIView setAnimationBeginsFromCurrentState:YES];  
            [UIView setAnimationDuration:0.3];  
            [self.view setFrame:viewFrame];  
            [UIView commitAnimations];  
        }  
        else  
        {  vi素材大全
            CGRect viewFrame = CGRectMake(0, 20, 320, 460);  
              
            [UIView beginAnimations:nil context:NULL];  
            [UIView setAnimationBeginsFromCurrentState:YES];  
            [UIView setAnimationDuration:0.3];  
            [self.view setFrame:viewFrame];  
            [UIView commitAnimations];  
        }  
    }  
2. [代码]用法很简单,在UITextFieldDelegate的两个方法里分别调用一下这个方法就OK了,如下示例:  
    - (void)textFieldDidBeginEditing:(UITextField *)textField  
    {  
            [self moveView:textField leaveView:NO];  
    }  
      
    - (void)textFieldDidEndEditing:(UITextField *)textField;  
    {  
        [self moveView:textField leaveView:YES];  
    }

通用方法解决UITextFiled输入的时候,键盘遮挡问题的更多相关文章

  1. 通用方法解决dedecms导航调用二级、三级栏目菜单

    博客之前做网站的时候经常会遇到二级菜单.三级菜单.了解dede的人都知道从5.5版本开始都有二级菜单的调用方法了,网上也有不少的教程文章.不过这个调用需要修改dede源码的二级菜单样式.个人感觉不是很 ...

  2. 避免scrollview内部控件输入时被键盘遮挡,监听键盘弹起,配合做滚动

    1,监听键盘 2,根据当前键盘弹起高度与控件的底部位置计算滑动距离 3,根据滑动距离在键盘弹起和隐藏是分别设置动画完成滑动     实现: 1,监听键盘使用   #pragma mark - 键盘监听 ...

  3. 安卓手机 HTML5 手机页面 输入表单被键盘遮挡住了

    TML5 手机页面 输入表单被键盘遮挡住了 请问 大神 怎么 js 或者 JQ 判断安卓手机软键盘的键盘隐藏键按下去了? 有使用 uexWindow 方法 能判断到确定键 是 13 但是不知道这个键的 ...

  4. iOS 键盘遮挡输入 解决办法

    .初始化及添加通知观察者 - (void)viewDidLoad { [super viewDidLoad]; self.tableView = [[UITableView alloc] initWi ...

  5. Ubuntu下Sublime Text 3解决无法输入中文的方法

    Ubuntu下Sublime Text 3解决无法输入中文的方法_百度经验http://jingyan.baidu.com/article/f3ad7d0ff8731609c3345b3b.html ...

  6. h5开发安卓机型点击输入框调起输入法,输入框被键盘遮挡的解决方法

    前言: 从以前的项目中找一个问题的解决方案,顺带找到了这个安卓机型调起输入法,页面没有自动上滑导致输入框被弹起的键盘遮挡的解决方案.这个问题只有安卓机型页面中的输入框处于底部(也就是底部键盘区域)的时 ...

  7. CC2530入门教程-02】CC2530的通用I/O端口输入和输出控制

    第2课  CC2530的通用I/O端口输入和输出控制 广东职业技术学院  欧浩源 一.CC2530的引脚概述 CC2530微控制器采用QFN40封装,有40 个引脚.其中,有21个数字I/O端口,其中 ...

  8. android 记一次解决键盘遮挡问题

    文章链接:https://mp.weixin.qq.com/s/1gkMtLu0BTXOUOj6isDjUw 日常android开发过程中,会遇到编辑框输入内容弹出软键盘,往往会出现键盘遮挡内容,或者 ...

  9. VB的一些项目中常用的通用方法-一般用于验证类

    1.VB的一些项目中常用的通用方法: ' 设置校验键盘输入值,数字 Public Function kyd(key As Integer) As Integer Dim mychar mychar = ...

随机推荐

  1. HTML5 一些有用的 APIs

    Animation Timing Window.requestAnimationFrame(callback): 告诉浏览器希望执行一个动画,让浏览器在下一个动画帧安排一次网页重绘(类似于 setTi ...

  2. Spring IOC知识java反射

    [1] Java反射知识-->Spring IoC :http://www.iteye.com/topic/1123081 [2] Java动态代理-->Spring AOP :http: ...

  3. 【Protocol Buffers】grpc默认使用的Google 开源的一套成熟的结构数据序列化机制

    grpc默认使用的Google 开源的一套成熟的结构数据序列化机制 参考地址:https://blog.csdn.net/shensky711/article/details/69696392 参考地 ...

  4. iOS -- SKPhysicsWorld类

    SKPhysicsWorld类 继承自 NSObject 符合 NSCodingNSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit. ...

  5. SilverLight:基础控件使用(4)-日期显示和选择类控件

    ylbtech-SilverLight-Basic-Control:基础控件使用(4)-日期显示和选择类控件 Calendar,DatePicker 1.A,返回顶部 Calendar控件(日期控件) ...

  6. Linux进程调度(3):进程切换分析

     3.调度函数schedule()分析 当kernel/sched.c:sched_tick()执行完,并且时钟中断返回时,就会调用kernel/sched.c:schedule()完成进程切换.我们 ...

  7. Win8 使用经验之飞鸽传书

    参考资料: http://jingyan.baidu.com/article/c1a3101eb52cd8de656deba6.html Win8的UAC关闭不生效?彻底关闭Win8的UAC? 1. ...

  8. Python操作MySQL:pymysql和SQLAlchemy

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  9. POCO类

    我认为POCO(简单传统CLR对象)重点应该是简单,不跟其他不相关的类进行关联关系或不相关的属性.<NHibernate 4 Beginner Guid>这本书有提到,应该是满足下面三个条 ...

  10. Python web 框架:web.py

    web.py 是一个Python 的web 框架,它简单而且功能强大.web.py 是公开的,无论用于什么用途都是没有限 制的. web.py 安装: pip install web.py 下面开始我 ...