从键盘扩展中获取安全区域底部插图的高度

Posted

技术标签:

【中文标题】从键盘扩展中获取安全区域底部插图的高度【英文标题】:Get height of the safe area bottom inset from a keyboard extension 【发布时间】:2021-07-09 17:23:07 【问题描述】:

从键盘扩展中,我们试图获取键盘下方空间的高度,当有一个主页指示器时。所有常用技术要么无法通过键盘扩展访问,要么返回 0

UIInputViewControllerview.safeAreaInsets.bottom 返回 0,以及 parent!.view.safeAreaInsets.bottom

并且任何调用windows、UIApplication等的方法都无法从扩展中访问。

【问题讨论】:

你用过AssistantKit吗? 【参考方案1】:

Apple 已确认目前无法从键盘扩展中获知安全区域插入。

【讨论】:

【参考方案2】:

如果是windows,UIApplication可以通过扩展访问你可以使用以下方法

if #available(ios 11.0, *) 

let window = UIApplication.shared.keyWindow
let topPadding = window?.safeAreaInsets.top
let bottomPadding = window?.safeAreaInsets.bottom


if #available(iOS 13.0, *) 

let window = UIApplication.shared.windows[0]
let topPadding = window.safeAreaInsets.top
let bottomPadding = window.safeAreaInsets.bottom

如果是windows,UIApplication不能通过扩展访问你可以使用以下方法

使用 safeAreaLayoutGuide 属性。我创建了以下扩展,您可以使用它:

extension UIView 
   public var safeAreaFrame: CGRect 
     if #available(iOS 11, *) 
        return safeAreaLayoutGuide.layoutFrame
     
     return bounds
   

用法:

 let frame = self.view.safeAreaFrame
 print(frame)

【讨论】:

谢谢;如问题中所述,无法从扩展程序访问

以上是关于从键盘扩展中获取安全区域底部插图的高度的主要内容,如果未能解决你的问题,请参考以下文章

flutter获取状态栏高度及安全区域

在 Nativescript 中获取 iOS 安全区域的宽度/高度

键盘消失时增加Tableview的高度?

uniapp 之 获取底部安全距离,状态栏高度等

uniapp 之 获取底部安全距离,状态栏高度等

uniapp 之 获取底部安全距离,状态栏高度等