在iPad中,当您将手指放在屏幕的顶部或底部边缘之外,然后将其拖动到屏幕上时,会显示一个菜单。你知道怎么做这样的事吗?
答案 0 :(得分:6)
在iOS 7
中引入了特定的手势识别器类。这是UIScreenEdgePanGestureRecognizer
。它的文档是here。看看吧。
要在模拟器中测试,只需从边缘附近开始拖动(~15点)。
此外,您还必须为每条边创建一个gestureRecognizer。你不能将OR边缘放在一起,因此UIRectEdgeAll
将不起作用。
有一个简单的例子here。希望这有帮助!
答案 1 :(得分:1)
你可以做这样的事情,这个例子就是你希望平移手势只在用户从屏幕右侧向内滑动20px时才能工作的情况
首先将手势添加到您的窗口
- (void)addGestures {
if (!_panGesture) {
_panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];
[_panGesture setDelegate:self];
[self.view addGestureRecognizer:_panGesture];
}
}
添加检查后,您收到的触摸是否为平移手势,然后相应地执行操作
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
CGPoint point = [touch locationInView:self.view];
if (gestureRecognizer == _panGesture) {
return [self slideMenuForGestureRecognizer:gestureRecognizer withTouchPoint:point];
}
return YES;
}
以下是检查您的触控是否包含在您希望的区域
的方法 -(BOOL)isPointContainedWithinBezelRect:(CGPoint)point {
CGRect leftBezelRect;
CGRect tempRect;
//this will be the width between CGRectMaxXEdge and the screen offset, thus identifying teh region
CGFloat bezelWidth =20.0;
CGRectDivide(self.view.bounds, &leftBezelRect, &tempRect, bezelWidth, CGRectMaxXEdge);
return CGRectContainsPoint(leftBezelRect, point);
}