zoukankan      html  css  js  c++  java
  • 【代码笔记】iOS-键盘自适应弹出

    一,效果图。

    二,工程图。

    三,代码。

    ViewController.h

    复制代码
    #import <UIKit/UIKit.h>
    
    @interface ViewController : UIViewController
    <UITextFieldDelegate>
    
    
    @end
    复制代码

     

    ViewController.m

    复制代码
    #import "ViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        
        UITextField *field=[[UITextField alloc]initWithFrame:CGRectMake(100, 300, 50, 50)];
        field.backgroundColor=[UIColor redColor];
        field.delegate=self;
        [self.view addSubview:field];
        
        
        
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
        
    }
    #pragma -mark -keyboard notificatin
    - (void)keyboardWillShow:(NSNotification *)notification {
        NSDictionary *info = [notification userInfo];
        // keyboardHeight 为键盘高度
        CGSize keyboardSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
        [self animateViewWithKeyboardHeight:keyboardSize.height];
    }
    
    - (void)keyboardWillHide:(NSNotification *)notification {
        [self animateViewWithKeyboardHeight:0.0];
    }
    
    - (void)animateViewWithKeyboardHeight:(CGFloat)keyboardHeight {
        NSTimeInterval animationDuration = 0.3f;
        CGFloat height = self.view.bounds.size.height;
        CGFloat width = self.view.bounds.size.width;
        CGFloat topSize = 0.0;
        CGFloat viewH = self.view.frame.size.height-64;
        CGFloat deviceHeight = [UIScreen mainScreen].bounds.size.height;
        CGFloat animateH = deviceHeight - viewH - keyboardHeight;
        if (animateH >= 0) {
            topSize = 0;
            CGRect toRect = CGRectMake(0, topSize, width, height);
            self.view.frame = toRect;
            
        } else {
            topSize = animateH;
            CGRect toRect = CGRectMake(0, topSize, width, height);
            [UIView animateWithDuration:animationDuration animations:^{
                self.view.frame = toRect;
            }];
        }
    }
    #pragma -mark -UITextFieldDelegate
    -(BOOL)textFieldShouldReturn:(UITextField *)textField
    {
        [textField resignFirstResponder];
        
        return YES;
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    
    @end
    复制代码
  • 相关阅读:
    oracle 当行函数 日期
    veridata实验举例(1)验证TCUSTMER与TCUSTORD两节点同步情况
    sdut1730 数字三角形问题(dp入门题)
    Android4.0 Design之UI设计易犯的错误2
    怎样提高团队管理能力6
    Effective C++ 29-33
    内存补齐序列一:关于内存对齐和填充
    【 D3.js 入门系列 --- 10.1 】 简化 GeoJSON 文件
    Android TrafficStats类的使用
    新手上路:Laravel-控制器基础
  • 原文地址:https://www.cnblogs.com/yang-guang-girl/p/7097281.html
Copyright © 2011-2022 走看看