我使用下面的代码来隐藏iPhone X上的home指示器,它在模拟器中工作得很好。
-(BOOL)prefersHomeIndicatorAutoHidden
{
return YES;
}但即使它是隐藏的,我仍然能够从底部向上滑动,我的游戏将进入主屏幕。
我见过一些游戏,用户必须向上滑动一次才能调出主页指示器,然后再次向上滑动才能进入主屏幕。
那么,如何使用Objective-C强制用户滑动两次主页指示器才能转到iOS 11的主屏幕呢?
这是全屏游戏所必需的。
发布于 2018-10-19 22:14:17
PrefersHomeIndicatorAutoHidden必须返回NO,但还必须重写PreferredScreenEdgesDeferringSystemGestures并返回UIRectEdgeBottom。
Swift 4.2
override var prefersHomeIndicatorAutoHidden: Bool {
return false
}
override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge {
return UIRectEdge.bottom
}发布于 2017-12-18 03:31:57
将以下代码添加到ViewController中为我解决了这个问题:
- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures
{
return UIRectEdgeBottom;
}这使得Home指示器更加透明和停用,因此需要额外滑动才能离开游戏。
您还可以使用UIRectEdgeAll而不是UIRectEdgeBottom来延迟屏幕所有边缘上的系统手势。
发布于 2017-12-14 13:31:48
它是隐藏和延迟之间的选择,但不能两者都有。
-(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");
}应该是这样的
https://stackoverflow.com/questions/47347403
复制相似问题