`
sking777
  • 浏览: 22933 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

iOS捕获键盘事件及获取键盘宽高

阅读更多
触屏设备都是虚拟键盘,所以当我们开发一些可输入内容的功能时,可能会遇到这样一种情况:弹出的键盘遮挡住了内容展示区,这时候就需要调整内容展示区的位置,让用户能看到自己输入的内容。

那么在iOS下怎么判断键盘是否弹出以及如何获取键盘占据的宽高呢?
其实iOS提供了若干种键盘相关的通知事件:
UIKeyboardWillShowNotification
UIKeyboardDidShowNotification
UIKeyboardWillChangeFrameNotification
UIKeyboardDidChangeFrameNotification
UIKeyboardWillHideNotification
UIKeyboardDidHideNotification
看名字基本就能猜出来意思:键盘被调起/键盘宽高发生改变/键盘收起


接下来我们通过一个例子来看看这些事件怎么用:

首先在viewController的viewDidAppear:中注册事件
- (void)viewDidAppear:(BOOL)animated {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardFrameWillChange:) name:UIKeyboardWillChangeFrameNotification object:nil];
}


然后别忘了在合适的位置注销事件,让事件的注册/注销对称
- (void)viewWillDisappear:(BOOL)animated {
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillChangeFrameNotification object:nil];
}


ok注册完了事件就能在对应的方法中获得事件响应
- (void)keyboardFrameWillChange:(NSNotification*)aNotification {
    NSDictionary* info = [aNotification userInfo];
    _kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
    // do your job here
}

当键盘的宽高发生改变时,keyboardFrameWillChange:就会得到响应,这时会接收到事件相关的notification,从这个notification中我们又可以拿到事件相关的属性,上面的方法里我们从userInfo中拿到了键盘的size,对应的key为UIKeyboardFrameEndUserInfoKey,拿到了宽高值我们就可以自己计算视图中其它元素该如何调整位置啦。

其它事件小伙伴们就自己尝试吧,今天就到这啦。
0
0
分享到:
评论

相关推荐

    react-native-keyevent:捕获外部键盘键或远程控制按钮事件

    捕获外部键盘按键或远程控制按钮事件 。 安装 通过npm 运行npm install react-native-keyevent --save 通过纱线 运行yarn add react-native-keyevent 连结中 Android: react-native link react-native-keyevent ...

    苹果iPhone APP iOS开发之webkit教程.zip

    苹果iPhone APP iOS开发之webkit教程.zip ...关闭iOS中键盘自动大写、自动更正、自动完成 其他CSS的杂项 其他js杂项 添加初始化图片 文件上传, 从相机捕获媒体 电话短信 移除 iOS 默认的按钮样式 自定义主屏上的图标

    MediaPicker-iOS:WPMediaPicker是一个iOS控制器,允许捕获和拾取媒体资产

    WPMediaPicker是一个iOS控制器,允许捕获和拾取媒体资产。 它允许: 允许一次性选择多个媒体对象。 在选择器中捕获新媒体。 对媒体库使用不同的数据源。 在不同的专辑之间切换。 按媒体类型过滤。 全屏预览...

    ImagePicker-xamarin-ios:Xamarin iOS的图像选择器端口

    专为聊天应用程序和常规视图控制器设计的演示文稿 纵向和横向模式(支持iPhone X) 捕获资产(照片,实时照片,视频) 将捕获的资产保存到照片库 翻转相机到前/后 打开/关闭实时照片 高度可定制的布局和UI 要求iOS ...

    SimulatorSetup:从以前的快照设置您的iOS模拟器权限

    “ SimulatorSetup”是一个脚本,可让您在运行测试之前将以前捕获的模拟器状态应用于iOS模拟器。 这使您可以运行测试,否则在运行测试之前,这些测试可能需要手动设置模拟器。 SimulatorSetup能够捕获和还原以下...

    ScreenFlow 10.0 for Mac 强大易用的屏幕录像工具

    凭借高质量的屏幕、视频、音频和iOS捕获,异常强大的编辑功能以及新的库存媒体库选项*,ScreenFlow可以帮助你以前所未有的方式轻松创建令人难以置信的视频、GIF动画和APNG。你不会找到一个更容易使用或更直观的视频...

    image-picker:一个易于使用,高度可配置的图像选择器,可用于您的聊天应用程序

    纵向和横向模式(支持iPhone X) 捕获资产(照片,实时照片,视频) 将捕获的资产保存到照片库 将相机翻转到前/后 打开/关闭实时照片 高度可定制的布局和用户界面要求iOS 10.1以上Xcode 9+ 斯威夫特4 安装手动地概述...

    java开源包1

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包11

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包2

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包3

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包6

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包5

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包10

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包4

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包8

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包7

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包9

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包101

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

Global site tag (gtag.js) - Google Analytics