Ios iPhone-X-如何强制用户滑动两次主屏幕指示器以返回主屏幕
我正在使用下面的代码隐藏iPhoneX上的home指示器,它在模拟器中运行良好Ios iPhone-X-如何强制用户滑动两次主屏幕指示器以返回主屏幕,ios,ios11,iphone-x,Ios,Ios11,Iphone X,我正在使用下面的代码隐藏iPhoneX上的home指示器,它在模拟器中运行良好 -(BOOL)prefersHomeIndicatorAutoHidden { return YES; } 但即使它是隐藏的,我仍然能够从底部向上滑动,我的游戏进入主屏幕 我看过一些游戏,用户必须向上滑动一次才能打开主屏幕指示灯,然后再次向上滑动才能进入主屏幕 那么,在iOS 11中,如何使用Objective-C强制用户滑动主屏幕指示器两次以进入主屏幕呢 这种行为是全屏游戏所必需的。它是隐藏和延迟之间的选
-(BOOL)prefersHomeIndicatorAutoHidden
{
return YES;
}
但即使它是隐藏的,我仍然能够从底部向上滑动,我的游戏进入主屏幕
我看过一些游戏,用户必须向上滑动一次才能打开主屏幕指示灯,然后再次向上滑动才能进入主屏幕
那么,在iOS 11中,如何使用Objective-C强制用户滑动主屏幕指示器两次以进入主屏幕呢
这种行为是全屏游戏所必需的。它是隐藏和延迟之间的选择,但不是两者都有
-(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];
并定义HandleTesture,无需为此做任何事情
- (void)handleGesture:(UIScreenEdgePanGestureRecognizer *)recognizer {
// to get location where the first touch occurred from docs
// CGPoint location = [recognizer locationInView:[recognizer.view superview]];
NSLog(@"gestured");
}
应该是这样的将以下内容添加到ViewController中对我起了作用:
- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures
{
return UIRectEdgeBottom;
}
这使得Home指示器更加透明和不活动,因此需要额外的滑动才能离开游戏
您也可以使用UIRectEdgeAll
而不是UIRectEdgeBottom
来延迟屏幕所有边缘上的系统手势。I
preferredscreenedges延迟系统手势必须被覆盖并返回UIRectEdgeBottom
Swift 4.2
这对我很有用:
-(bool)首选ShomeIndicator自动隐藏{
返回否;
}
是的,我也忘了。虽然如果PreferShomeIndicator或AutoHidden返回“是”,但它的行为仍然不正确,我感到惊讶的是,它会允许您在没有注册的情况下延迟接收延迟通知,但“但不是两者”需要强调。值得注意的是,您可以返回。如果您想限制所有手势,就像从顶部向下滑动到指挥中心一样。
override var prefersHomeIndicatorAutoHidden: Bool {
return false
}
override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge {
return UIRectEdge.bottom
}