ios - 隐藏在键盘下的 SKStoreReviewController 按钮

标签 ios swift keyboard skstorereviewcontroller

我的 swift iOS 应用程序有一个带键盘显示的事件文本字段。 每次用户点击键盘上的返回键时,我都会调用

SKStoreReviewController.requestReview()

这听起来可能有点过分,但是一旦用户给出了评论,上面的声明就不会做任何事情,所以我认为我的做法是正确的。

问题是在较小的屏幕设备(iPhone 5 等)上,显示的 SKStoreReviewController 按钮隐藏在键盘下方。

所以用户会因为无法关闭 SKStoreReviewController 而陷入困境。 我不想为用户添加键盘隐藏按钮。

我如何知道 SKStoreReviewController 何时显示,以便我可以编程方式隐藏键盘?

最佳答案

您无法判断它是否正在显示。

您可以阅读有关SKStoreReviewController 的文档 here , 仅显示 requestReview()您用来调用它的函数。

但是,如果您想深入挖掘,我提供了以下屏幕截图,其中显示了显示请求时Debug View Hierarchy 的样子。

enter image description here

这告诉您的是,您无法尝试通过 presentedViewController 等属性深入了解屏幕是否正在显示。

通常,如果您要呈现一个 UIAlertController 或与此相关的任何 UI 元素,您会看到 UI 部分堆叠在一起形成它,这表明您可以访问关联的属性以找出什么正在呈现。使用此类时,不会提供任何内容,因此您的应用不会注意到正在发生的事情。

以下屏幕截图说明了当屏幕上有多个元素时 View 层次结构的样子:

enter image description here

正如 Apple 在类文档中提到的那样,您需要开发自己的逻辑来在它不会呈现您当前遇到的问题时呈现它。

关于ios - 隐藏在键盘下的 SKStoreReviewController 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46132247/

相关文章:

ios - 更改 UIScrollVIew Content Inset 触发 scrollViewDidScroll

iphone - iOS 7 替代 CTCall?

ios - 圆形 UIView 上的 CGAffineTransformMakeScale 动画为正方形

ios - 淡入/淡出 UILabel

ios - 在 SpriteKit 中随着时间的推移减小 CGPath 的大小?

javascript - 为什么在keydown回调中返回false并不会停止按钮点击事件?

macos - 获取 macOS 键盘类型并检测内置、屏幕或 USB

ios - 在 Swift 2.x 和 iOS9 中以编程方式关闭 searchBar

c - Linux的systemd的udev使用的 "keyboard-keys-from-name.h"在哪里?

ios - 如何将 Double 格式化为货币 - Swift 3