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

    只记录目前为止关注的.JDK1.8 一.基础属性 1.1 内部参数 //空存储实例.直接new ArrayList()便是以该空数组作为实例 private static final Object[] ...

  2. Oracle内部latch获取函数简介

      标签: oracle call 函数   oracle statpack   转自: http://blog.51cto.com/458302/998775 Oracle的内部函数一直非常神秘,其 ...

  3. spring计时工具类stopwatch用法

    public class Test { public static void main(String[] args) { StopWatch stopWatch = new StopWatch(); ...

  4. [反汇编练习] 160个CrackMe之036

    [反汇编练习] 160个CrackMe之036. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  5. 从SDCard获取的图片按分辨率处理的方法

    前段时间公司开发的Launcher要做主题切换的功能,但切换主题时须要从sdcard中获取要切换的图片资源,拿到后图片的大小不正常. 后来查找原因是:系统对不同分辨率拿到的图片资源会自己主动的做转化, ...

  6. Ubuntu 安装 spark

    环境: Unbunt 12.04 Hadoop 2.2.x Sprak 0.9 Scala scala-2.9.0.final.tgz 步骤 1. 下载 scala 2. 解压scala,然后改动/e ...

  7. 本机上使用Three.js载入纹理

    怎样载入纹理 // 首先, 创建一个纹理 var mapUrl = "../images/molumen_small_funny_angry_monster.jpg"; var m ...

  8. Libx264 编码错误 Input picture width(320) is greater than stride (0)

    Ffmpeg libx264编码出现 Input picture width(320) is greater than stride (0),问题出在视频格式不正确. libx264 编码要求输入源的 ...

  9. POJ 1141 Brackets Sequence (区间DP)

    Description Let us define a regular brackets sequence in the following way: 1. Empty sequence is a r ...

  10. ubuntu14.04下CPU的caffe配置,不成功的朋友请与我(lee)联系,后面附带邮箱

    因广大朋友需求cpu的caffe配置.所以我(lee)在这份博客中对cpu配置caffe做出对应操作说明.希望能够解决大家对cpu配置caffe的困惑.少走弯路. 假设有安装不成功的朋友能够和我联系, ...