栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Swift中从userInfo获取键盘大小Getting keyboard size from userInfo in Swift

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Swift中从userInfo获取键盘大小Getting keyboard size from userInfo in Swift

您的生产线存在一些问题

    var keyboardSize = notification.userInfo(valueForKey(UIKeyboardframeBeginUserInfoKey))
  • notification.userInfo返回一个可选的 dictionary [NSObject : AnyObject]?,因此在访问它的值之前必须先将其拆开。
  • Objective-C NSDictionary映射到Swift本机字典,因此您必须使用字典下标语法(dict[key])来访问值。
  • 该值必须强制转换为NSValue以便可以调用CGRectValue它。

所有这些都可以通过可选分配,可选链接和可选强制转换的组合来实现:

if let userInfo = notification.userInfo {   if let keyboardSize = (userInfo[UIKeyboardframeBeginUserInfoKey] as? NSValue)?.CGRectValue() {    let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)       // ...   } else {       // no UIKeyboardframeBeginUserInfoKey entry in userInfo   }} else {   // no userInfo dictionary in notification}

or in one step:

if let keyboardSize = (notification.userInfo?[UIKeyboardframeBeginUserInfoKey] as? NSValue)?.CGRectValue() {    let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)    // ...}

Update for Swift 3.0.1 (Xpre 8.1):

if let userInfo = notification.userInfo {    if let keyboardSize = userInfo[UIKeyboardframeBeginUserInfoKey] as? CGRect {        let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)        // ...    } else {        // no UIKeyboardframeBeginUserInfoKey entry in userInfo    }} else {    // no userInfo dictionary in notification}

or in one step:

if let keyboardSize = notification.userInfo?[UIKeyboardframeBeginUserInfoKey] as? CGRect {    let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)    // ...}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394618.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号