通用方法解决UITextFiled输入的时候,键盘遮挡问题

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

时间: 2025-01-07 23:09:50

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

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

1,监听键盘 2,根据当前键盘弹起高度与控件的底部位置计算滑动距离 3,根据滑动距离在键盘弹起和隐藏是分别设置动画完成滑动 实现: 1,监听键盘使用 #pragma mark - 键盘监听-(void)AddObserverForKeyboard{    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardWillShow:) name:UIKeyboardWillShow

UITextField完成输入后关闭键盘的方法

iPhone的键盘是基于软件,而不是物理键盘的,因此需要一些额外的步骤来确保用户在完成输入后关闭键盘.1.通过点击Return按钮关闭键盘当用户按下Return按钮时,将触发“did end on exit”事件,此时我们需要让文本字段取消控件,以关闭键盘.在控制器类头文件中加入一个操作方法 -(IBAction)textFieldDoneEditing:(id)sender; 在相应的.m文件中实现该方法 -(IBAction)textFieldDoneEditing:(id)sender{[

iOS UITextField完成输入后关闭键盘的方法总结

// //  ViewController.swift //  UITextField完成输入后关闭键盘的方法 // //  Created by 悦兑科技 on 15/1/19. //  Copyright (c) 2015年 BSY. All rights reserved. // import UIKit class ViewController: UIViewController,UITextFieldDelegate { var textF = UITextField() overri

IOS控件UITextView 实现placeholder效果和解决UITableView键盘遮挡

平时开发中老是出现多行的文本而且要有placeholder提示,就自己整理项目中部分代码以供参考.讨论,希望有更好实现方法的人多多指教. 思路:通过改变UITextView的文本颜色实现placeholder效果,通过改变UITableView的setContentOffset方法解决键盘遮挡 1.创建UITextView textView = [[UITextViewalloc] init]; textView.font = [UIFontsystemFontOfSize:14]; textV

React-native键盘遮挡输入框问题的解决

RN中要解决键盘遮挡输入框的问题其实有挺多方式,在这里只是记录其中的一些个人实际开发中使用到的. 方式一.使用scrollTo方法,这也是最简单最粗暴的,只是需要计算scrollview滚动的距离,并且处理一些体验的bug问题.大致思路是:组件render方法中使用scrollview,并且设置scrollview的keyboardShouldPersistTaps={true}(此步一定不能少,如果缺少该属性,接下来的一步将会不起作用),然后在scrollview中用一个view作为conta

hibernate学习笔记4---HQL、通用方法的抽取实现

一.通用方法的抽取实现 由于hibernate中对增删改查的一切操作都是面向对象的,所以将增删改查抽取成通用方法,以满足不同的表的增删改查操作,简化jdbc代码. 具体例子如下: [java] view plaincopyprint? package cn.itcast.hibernate; import java.io.Serializable; import org.hibernate.Session; import org.hibernate.SessionFactory; import 

VS2013+openCV3.0无脑配置方法+解决警告问题【windows平台】

VS2013+openCV3.0无脑配置方法+解决警告问题[windows平台] 本文介绍如何配置VS+openCV环境,并解决“opencv 3.0 warning C4819: 该文件包含不能在当前代码页(936)中表示的字符.请将该文件保存为 Unicode 格式以防止数据丢失的”警告 参考博客: http://my.phirobot.com/blog/2014-02-opencv_configuration_in_vs.html 下载 openCV 下载 Opencv for Windo

List对象排序通用方法

在数据库中查出来的列表list中,往往需要对不同的字段重新排序,一般的做法都是使用排序的字段,重新到数据库中查询.如果不到数据库查询,直接在第一次查出来的list中排序,无疑会提高系统的性能. 只要把第一次查出来的结果存放在session中,就可以对list重新排序了.一般对list排序可以使用Collections.sort(list),但如果list中包含是一个对象的话,这种方法还是行不通的.那要怎么排序呢?如果有一个UserInfo对象,包含如下字段: private java.lang.

《转载》ubuntu Sublime text 3 解决中文输入问题

其实,在这个文章之前,网上都有好多教程了.不知道是不是因为复制黏贴的传播太多,导致有些字符串的丢失,导致编译失败,so库文件无法载入,从而不能输入中文.折腾了许久之后,终于搞定了.记录下来,方便自己下次重装系统的时候用到. 按照这个教程装好ST之后,按下面的命令步骤来操作即可使用中文输入. 1.下载所需要的文件,并解压: wget  http://y4nwen.googlecode.com/files/sublime_text_chinese-input-method.tar.gz tar zx