我们在用键盘录入的时候,有可能会遮挡录入框,所以我们应调整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. SPOJ 8222 Substrings

    题面 Description 给长度为 n 的字符串 S , 对任意的 L , 求长度为 L 的子串最多出现的次数. Input String S consists of at most 250000 ...

  2. gvim的常用编辑快捷键

    gvim的快捷键很多,很难记全,但是入门初期应该找过几种基本的命令 下面结合自己常用到的介绍下 光标跳转: 0:行首 $:行尾 e:下一个单词的结尾 w:下一个单词的开头 b:上一个单词 H:当前页面 ...

  3. [Algorithm] Write a Depth First Search Algorithm for Graphs in JavaScript

    Depth first search is a graph search algorithm that starts at one node and uses recursion to travel ...

  4. Git以及github的使用方法(六),管理修改

    现在,假定你已经完全掌握了暂存区的概念.下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 你会问,什么是修改?比如你新增了一行,这就是一个修改 ...

  5. C 标准库 - <locale.h>

    C 标准库 - <locale.h> 简介 locale.h 头文件定义了特定地域的设置,比如日期格式和货币符号.接下来我们将介绍一些宏,以及一个重要的结构 struct lconv 和两 ...

  6. Solaris网络基础

      划分子网: 把大网缩小为若干个小网.修改子网掩码,划分多个网络. 那么如何确定子网的子网掩码和IP地址? 以上你会发现少了6个IP.   Ifconfig e1000g0 down down掉网卡 ...

  7. Anyoffice -HTML5大赛 悦心(基于H5开发安卓音乐app)-项目总结

    项目在线演示地址:http://rose111.applinzi.com/ github 地址:欢迎star https://github.com/midoxinxin/YueX-Music 悦心,一 ...

  8. Android 非静态内部类导致内存泄漏原因深入剖析

    背景 上周发现蘑菇街IM-Android代码里面.一些地方代码编写不当.存在内存泄漏的问题.在和疯紫交流的过程中.发现加深了一些理解,所以决定写一下分析思路,相互学习. 内存泄漏 一个不会被使用的对象 ...

  9. UITableView基础入门

    新建一个Single View Application 添加一个空类如下: using System; using UIKit; using Foundation; namespace BasicTa ...

  10. 实现单击列表头对ListView的动态排序

    排序是根据列的类型来的,就ID列来说,int类型的排序结果是3,5,17,而如果你把该列类型改为string,结果就会是17,3,5,如果你定义列的时候不加类型,默认是string,如果是自定义类型, ...