zoukankan      html  css  js  c++  java
  • [转载]关于UITextField的键盘遮挡问题

    1 前言
      平时做App的时候总会遇到,UITextField的键盘会遮挡住下面的内容,由于IOS没有自己的机制,所以需要自己写方法来控制,今天我们就介绍一种简单的方法,来应对键盘遮挡问题。

    2 代码实例

    ZYViewController.h

     1 #import <UIKit/UIKit.h> 
     2  
     3 @interface ZYViewController : UIViewController<UITextFieldDelegate> 
     4  
     5 @property(nonatomic,strong) UITextField *myTextField; 
     6  
     7 @end 
     8 
     9 #import <UIKit/UIKit.h>
    10 
    11 @interface ZYViewController : UIViewController<UITextFieldDelegate>
    12 
    13 @property(nonatomic,strong) UITextField *myTextField;
    14 
    15 @end

    ZYViewController.m

     1 @synthesize myTextField; 
     2  
     3 - (void)viewDidLoad 
     4 { 
     5     [super viewDidLoad]; 
     6     //Do any additional setup after loading the view, typically from a nib. 
     7     //self.view.backgroundColor = [UIColor underPageBackgroundColor]; 
     8     myTextField = [[UITextField alloc] init];//初始化UITextField 
     9     myTextField.frame = CGRectMake(35, 230, 250, 35); 
    10     myTextField.delegate = self;//设置代理 
    11     myTextField.borderStyle = UITextBorderStyleRoundedRect; 
    12     myTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;//垂直居中 
    13     myTextField.placeholder = @"Please entry your content!";//内容为空时默认文字 
    14     myTextField.returnKeyType = UIReturnKeyDone;//设置放回按钮的样式 
    15     myTextField.keyboardType = UIKeyboardTypeNumbersAndPunctuation;//设置键盘样式为数字 
    16     [self.view addSubview:myTextField]; 
    17      
    18      
    19     //注册键盘出现与隐藏时候的通知 
    20     [[NSNotificationCenter defaultCenter] addObserver:self 
    21                                              selector:@selector(keyboadWillShow:) 
    22                                              name:UIKeyboardWillShowNotification 
    23                                              object:nil]; 
    24     [[NSNotificationCenter defaultCenter] addObserver:self 
    25                                              selector:@selector(keyboardWillHide:) 
    26                                           name:UIKeyboardWillHideNotification 
    27                                           object:nil]; 
    28     //添加手势,点击屏幕其他区域关闭键盘的操作 
    29     UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)]; 
    30     gesture.numberOfTapsRequired = 1;//手势敲击的次数 
    31     [self.view addGestureRecognizer:gesture]; 
    32 } 
    33  
    34 //键盘出现时候调用的事件 
    35 -(void) keyboadWillShow:(NSNotification *)note{ 
    36     NSDictionary *info = [note userInfo]; 
    37     CGSize keyboardSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;//键盘的frame 
    38     CGFloat offY = (460-keyboardSize.height)-myTextField.frame.size.height;//屏幕总高度-键盘高度-UITextField高度 
    39     [UIView beginAnimations:nil context:NULL];//此处添加动画,使之变化平滑一点 
    40     [UIView setAnimationDuration:0.3];//设置动画时间 秒为单位 
    41     myTextField.frame = CGRectMake(35, offY, 250, 35);//UITextField位置的y坐标移动到offY 
    42     [UIView commitAnimations];//开始动画效果 
    43      
    44 } 
    45 //键盘消失时候调用的事件 
    46 -(void)keyboardWillHide:(NSNotification *)note{ 
    47     [UIView beginAnimations:nil context:NULL];//此处添加动画,使之变化平滑一点 
    48     [UIView setAnimationDuration:0.3]; 
    49     myTextField.frame = CGRectMake(35, 230, 250, 35);//UITextField位置复原 
    50  
    51     [UIView commitAnimations]; 
    52 } 
    53 //隐藏键盘方法 
    54 -(void)hideKeyboard{ 
    55     [myTextField resignFirstResponder]; 
    56 } 
    57 #pragma mark - 
    58 #pragma mark UITextFieldDelegate 
    59 //开始编辑: 
    60 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
    61 { 
    62     return YES; 
    63 } 
    64  
    65 //点击return按钮所做的动作: 
    66 - (BOOL)textFieldShouldReturn:(UITextField *)textField 
    67 { 
    68     [textField resignFirstResponder];//取消第一响应 
    69     return YES; 
    70 } 
    71  
    72 //编辑完成: 
    73 - (void)textFieldDidEndEditing:(UITextField *)textField 
    74 { 
    75      
    76 } 
    77  
    78 -(void)viewDidDisappear:(BOOL)animated{ 
    79     [super viewDidDisappear:animated]; 
    80     [[NSNotificationCenter defaultCenter] removeObserver:self];//移除观察者 
    81 } 

    运行结果:

    单击输入框后 

  • 相关阅读:
    课堂练习求环整数组中最大子数组之和
    学习进度第7周
    声明
    最大数
    学习进度02
    构建之法阅读笔记02
    学习进度01
    课堂练习之《哈利波特》
    《构建之法》阅读笔记06
    寻找水龙王2
  • 原文地址:https://www.cnblogs.com/jasonsuz/p/3237909.html
Copyright © 2011-2022 走看看