• 【代码笔记】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
    复制代码

     

  • 相关阅读:
    有7g和2g的砝码各一个,怎样称可以3次把140g东西分为50g和90g???????
    中缀到后缀(一个例子)
    动态代理模式的使用
    代理模式用来初始化的延迟下载
    ReentrantLock Condition 实现消费者生产者问题
    Two Sum
    [leetcode]重建二叉树(先序和终须) 中序遍和后续
    (转载)旋转数组查找 最简洁方法 总结
    [不明觉厉] 下一个排列
    codeforces -- 283A
  • 原文地址:https://www.cnblogs.com/yang-guang-girl/p/7201989.html
Copyright © 2020-2023  润新知