• iOS 关于键盘监听


    step—1:键盘的监听

    1.一般在viewWillAppear:方法中添加监听事件

    - (void)viewWillAppear:(BOOL)animated{

    [superviewWillAppear:animated];

     //增加监听,当键盘出现或改变时收出消息

        [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(keyboardWillShow:)name:UIKeyboardWillShowNotificationobject:nil];

     //增加监听,当键退出时收出消息

        [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotificationobject:nil];

    }

    //当键盘弹出时调用

    - (void)keyboardWillShow:(NSNotification*)notification{

     //获取键盘的高度

     NSDictionary*userInfo = [notification userInfo];

     NSValue*value = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];

     CGRectkeyboardRect = [value CGRectValue];

     CGFloatheight = keyboardRect.size.height;

     //第一种 self.view 平移的属性

     //self.view.transform=CGAffineTransformMakeTranslation(0,-height);

     //第二种 self.view frame的属性

     CGRectframe = self.view.frame;

        frame.origin.y= -height;

     self.view.frame= frame;

     NSLog(@"键盘打开...%@",NSStringFromCGRect(self.view.frame));

    }

    //当退出退出时调用

    - (void)keyboardWillHide:(NSNotification*)notification{

     //获取键盘的高度

     NSDictionary*userInfo = [notification userInfo];

     NSValue*value = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];

     CGRectkeyboardRect = [value CGRectValue];

     CGFloatheight = keyboardRect.size.height;

     //第一种 self.view 平移的属性

     //self.view.transform=CGAffineTransformIdentity;

     //self.view.transform=CGAffineTransformMakeTranslation(0,0);

     //第二种 self.view frame的属性

     CGRectframe = self.view.frame;

         frame.origin.y= 0;

     self.view.frame= frame;

     NSLog(@"键盘关闭...%@",NSStringFromCGRect(self.view.frame));

    }

    2.一般在viewWillDisappear:或dealloc 方法中移除

    - (void)viewWillDisappear:(BOOL)animated{

        [superviewWillDisappear:animated];

     //解除键盘出现通知

        [[NSNotificationCenterdefaultCenter] removeObserver:selfname:UIKeyboardDidShowNotificationobject:nil];

     //解除键盘隐藏通知

        [[NSNotificationCenterdefaultCenter] removeObserver:selfname:UIKeyboardDidHideNotificationobject:nil];

    }

    - (void)dealloc{

     //解除键盘出现通知

        [[NSNotificationCenterdefaultCenter] removeObserver:selfname:UIKeyboardDidShowNotificationobject:nil];

     //解除键盘隐藏通知

        [[NSNotificationCenterdefaultCenter] removeObserver:selfname:UIKeyboardDidHideNotificationobject:nil];

    }

    Step—2:键盘的的种类

    1>UIKeyboardTypeDefault:

    2>UIKeyboardTypeASCIICapable:

    3>UIKeyboardTypeNumbersAndPunctuation:

    4>UIKeyboardTypeURL:

    5>UIKeyboardTypeNumberPad:

    6>UIKeyboardTypePhonePad:

    7>UIKeyboardTypeNamePhonePad:

    8>UIKeyboardTypeEmailAddress:

    9>UIKeyboardTypeDecimalPad:

    10>UIKeyboardTypeTwitter:

    11>UIKeyboardTypeWebSearch:

    12>UIKeyboardTypeAlphabet:

  • 相关阅读:
    最新版SpringBoot整合Mybatis,实现增删改查(CRUD)
    LeetCode【13】罗马数字转整数
    Linux 内核模块API之find_module
    网络安全(黑客)自学
    我用GPT4 预测了10年后中国大学排名Top10
    docker-compose的部署
    vr编辑器可以解决教育教学中的哪些问题
    X11 Xlib截屏问题及深入分析三 —— 源码实现2
    x264编码器中的多线程等待
    SpringBoot多文件配置,加载顺序与位置
  • 原文地址:https://blog.csdn.net/qq_34491373/article/details/126419752