iPhone-X - 如何强制用户滑动两次主页指示器进入主屏幕

Posted

技术标签:

【中文标题】iPhone-X - 如何强制用户滑动两次主页指示器进入主屏幕【英文标题】:iPhone-X - How to force user to swipe twice home indicator to go home-screen 【发布时间】:2017-11-17 09:36:40 【问题描述】:

我正在使用下面的代码隐藏 iPhone X 上的主页指示器,它在模拟器中运行良好。

-(BOOL)prefersHomeIndicatorAutoHidden

    return YES;

但即使它被隐藏了,我仍然可以从底部向上滑动,然后我的游戏就会进入主屏幕。

我见过一些游戏,用户必须向上滑动一次才能调出主页指示器,然后再次向上滑动才能进入主屏幕。

那么,在 ios 11 中,如何通过 Objective-C 强制用户滑动主页指示器两次以转到主屏幕?

全屏游戏需要此行为。

【问题讨论】:

【参考方案1】:

我had the same problem。

PrefersHomeIndicatorAutoHidden 必须返回 NO,但 PreferredScreenEdgesDeferringSystemGestures 必须被覆盖并返回 UIRectEdgeBottom

斯威夫特 4.2

override var prefersHomeIndicatorAutoHidden: Bool 
  return false


override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge 
  return UIRectEdge.bottom

【讨论】:

值得注意的是,如果你想限制所有手势,比如从顶部向下滑动到命令中心,你可以返回 .all。【参考方案2】:

将以下内容添加到 ViewController 对我来说很有效:

- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures

    return UIRectEdgeBottom;

这使得主页指示器更加透明和不激活,因此需要额外滑动才能离开游戏。

您还可以使用UIRectEdgeAll 代替UIRectEdgeBottom 来延迟屏幕所有边缘的系统手势。

【讨论】:

是的,也忘记了那个。虽然如果 prefersHomeIndicatorAutoHidden 返回“是”,它的行为仍然不正确,但我很惊讶它会让您推迟而不注册接收延迟通知【参考方案3】:

这是隐藏和延迟之间的选择,但不能同时选择

-(BOOL)prefersHomeIndicatorAutoHidden

    // YES for hidden (but swipe activated)
    // NO for deferred (app gets priority gesture notification)
    return NO;  

在 viewDidLoad 中注册手势

UIScreenEdgePanGestureRecognizer *sePanGesture = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
sePanGesture.edges = UIRectEdgeAll; 
// or just set the bottom if you prefer, top-right seems to behave well by default
[self.view addGestureRecognizer:sePanGesture]; 

并定义handleGesture,无需为此做任何事情

- (void)handleGesture:(UIScreenEdgePanGestureRecognizer *)recognizer 
    // to get location where the first touch occurred from docs
    // CGPoint location = [recognizer locationInView:[recognizer.view superview]]; 

    NSLog(@"gestured");

应该是的

【讨论】:

“但不能同时强调”【参考方案4】:

这对我有用:

-(bool) prefersHomeIndicatorAutoHidden 

return NO;


【讨论】:

以上是关于iPhone-X - 如何强制用户滑动两次主页指示器进入主屏幕的主要内容,如果未能解决你的问题,请参考以下文章

iPhone X 主页指示灯行为

我可以在初始加载视图时旋转 tableview UIRefreshControl(活动指示器),而无需用户向下滑动吗?

如何在 Flutter 中使用 PageView 创建轮播(滑动动画)?

iOS - 当应用程序被用户强制退出时处理静默推送通知

如何在 iPhone X 的主页指示器下方扩展底视图颜色?

检测用户何时点击 UIDatePicker 中的选择指示器?