隐藏在键盘下的 SKStoreReviewController 按钮
SKStoreReviewController buttons hidden under keyboard
我的 swift iOS 应用程序有一个带键盘显示的活动文本字段。
每次用户点击键盘上的 return 键时,我都会调用
SKStoreReviewController.requestReview()
这听起来可能有点过分,但是一旦用户给出了评论,上面的声明就没有任何作用,所以我认为我的做法是正确的。
问题是在较小的屏幕设备(iPhone 5 等)上,显示的 SKStoreReviewController 按钮隐藏在键盘下方。
因此用户无法关闭 SKStoreReviewController,因此卡住了。
我不想为用户添加键盘隐藏按钮。
我如何知道 SKStoreReviewController
何时显示,以便我可以编程方式隐藏键盘?
您无法判断它是否正在显示。
您可以阅读有关 SKStoreReviewController
here, which shows only the requestReview() 用于调用它的函数的文档。
但是,如果您想深入挖掘,我提供了以下屏幕截图,其中显示了 调试视图层次结构 在显示请求时的样子。
这告诉您的是,您无法尝试通过诸如 presentedViewController
之类的属性深入挖掘以试图判断屏幕是否正在显示。
通常,如果您要展示 UIAlertController
或任何 UI 元素,您会看到 UI 部分堆叠在一起形成它,这表明您可以访问关联的属性以找出正在呈现的内容。有了这个 class,其中的 none 就被提供了,所以你的应用程序不会注意到正在发生的事情。
以下屏幕截图说明了当屏幕上有多个元素时视图层次结构的样子:
正如 Apple 在 class 文档中提到的那样,您需要开发自己的逻辑来在它不会呈现您当前遇到的问题时呈现它。
我刚刚在这里回答了这个问题:
您可以将文本字段设置为在显示评级视图时关闭键盘,并在关闭评级视图时再次启用键盘:
- (void)windowDidBecomeVisibleNotification:(NSNotification *)notification
{
if([notification.object class] == [MonitorObject class])
{
NSLog(@"Review Window shown");
[self.enterCodeView resignFirstResponder];
}
}
- (void)windowDidBecomeHiddenNotification:(NSNotification *)notification
{
if([notification.object class] == [MonitorObject class])
{
NSLog(@"Review Window hidden!");
[self.enterCodeView becomeFirstResponder];
}
}
我的 swift iOS 应用程序有一个带键盘显示的活动文本字段。 每次用户点击键盘上的 return 键时,我都会调用
SKStoreReviewController.requestReview()
这听起来可能有点过分,但是一旦用户给出了评论,上面的声明就没有任何作用,所以我认为我的做法是正确的。
问题是在较小的屏幕设备(iPhone 5 等)上,显示的 SKStoreReviewController 按钮隐藏在键盘下方。
因此用户无法关闭 SKStoreReviewController,因此卡住了。 我不想为用户添加键盘隐藏按钮。
我如何知道 SKStoreReviewController
何时显示,以便我可以编程方式隐藏键盘?
您无法判断它是否正在显示。
您可以阅读有关 SKStoreReviewController
here, which shows only the requestReview() 用于调用它的函数的文档。
但是,如果您想深入挖掘,我提供了以下屏幕截图,其中显示了 调试视图层次结构 在显示请求时的样子。
这告诉您的是,您无法尝试通过诸如 presentedViewController
之类的属性深入挖掘以试图判断屏幕是否正在显示。
通常,如果您要展示 UIAlertController
或任何 UI 元素,您会看到 UI 部分堆叠在一起形成它,这表明您可以访问关联的属性以找出正在呈现的内容。有了这个 class,其中的 none 就被提供了,所以你的应用程序不会注意到正在发生的事情。
以下屏幕截图说明了当屏幕上有多个元素时视图层次结构的样子:
正如 Apple 在 class 文档中提到的那样,您需要开发自己的逻辑来在它不会呈现您当前遇到的问题时呈现它。
我刚刚在这里回答了这个问题:
您可以将文本字段设置为在显示评级视图时关闭键盘,并在关闭评级视图时再次启用键盘:
- (void)windowDidBecomeVisibleNotification:(NSNotification *)notification
{
if([notification.object class] == [MonitorObject class])
{
NSLog(@"Review Window shown");
[self.enterCodeView resignFirstResponder];
}
}
- (void)windowDidBecomeHiddenNotification:(NSNotification *)notification
{
if([notification.object class] == [MonitorObject class])
{
NSLog(@"Review Window hidden!");
[self.enterCodeView becomeFirstResponder];
}
}