【代码笔记】iOS-只让textField使用键盘通知

代码:

复制代码
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    //为textField增加键盘事件
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addKeyboardNoti) name:UITextFieldTextDidBeginEditingNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(removeKeyboardNoti) name:UITextFieldTextDidEndEditingNotification 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 -UITextFieldText Notification
//增加键盘事件
-(void)addKeyboardNoti
{
    NSLog(@"------addKeyboardNoti-------");
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}
//移除键盘事件
-(void)removeKeyboardNoti
{
    NSLog(@"------removeKeyboardNoti---------");
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
复制代码

 

原文地址:https://www.cnblogs.com/yang-guang-girl/p/7201989.html