• iOS监听键盘改变view的frame


    将view关联成该类,并把输入框放在该view上.

    //
    //  KeyboardListenerView.m
    //  ParkingProject
    //
    //  Created by Eric on 16/10/12.
    //  Copyright © 2016年 Eric. All rights reserved.
    //
    
    #import "KeyboardListenerView.h"
    
    @implementation KeyboardListenerView
    
    
    //记录键盘是否移动过;
    static bool isMove;
    //记录键盘上移的距离
    static CGFloat subHeight;
    - (void)drawRect:(CGRect)rect {
        // 开始监听
        [self keyBoardNosnotification];
    
    }
    - (void)keyBoardNosnotification {
        //监听键盘状态
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardShow:) name:UIKeyboardWillShowNotification object:nil];
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardHide:) name:UIKeyboardWillHideNotification object:nil];
    }
    - (void)keyboardShow:(NSNotification *)notification
    {
        //键盘的frame
        CGRect rect = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
        //键盘的y
        CGFloat y = rect.origin.y;
        [UIView animateWithDuration:0.2 animations:^{
            //view的最大y值
            CGFloat maxY = CGRectGetMaxY(self.frame);
            //比较view和键盘的y判断是否需要移动
            isMove = maxY > y ? YES:NO;
                if (isMove) {
                    //移动的距离
                    subHeight = maxY-y;
                    //移动,注意不能直接改frame;
                    self.transform = CGAffineTransformMakeTranslation(0, self.transform.ty-subHeight);
                }
        }];
        
    }
    
    - (void)keyboardHide:(NSNotification *)notification
    {
        [UIView animateWithDuration:0.1 animations:^{
            //如果移动了,移动回来.
            if (isMove) {
                self.transform =CGAffineTransformMakeTranslation(0,self.transform.ty+subHeight);
    
            }
        }];
    }
    @end
  • 相关阅读:
    Linux系统信息查看
    批处理Dos命令
    python语法31[函数]
    python基础31[数据结构list+tuple+set+dictionary]
    nmake使用
    linux间文件拷贝
    linux文件同步工具Unison的使用
    python语法31[基本数据类型和流程控制]
    远程桌面管理工具比较
    WindowsBatch与LinuxShell比较[batchfile之for命令详解]
  • 原文地址:https://www.cnblogs.com/sunmair/p/5953986.html
Copyright © 2020-2023  润新知