在整个iOS 7中,有许多情况下,用户可以从屏幕的左边缘或右边缘滑动手指来执行操作,例如弹出视图控制器或显示侧边栏。
有没有一种我完全忽略的内置方法(是的,我已经进行了广泛的搜索)?或者是检查平移开始位置的帧位置的唯一方法?
这是因为如果用户从边缘或中间拉出,我希望执行不同的操作。
发布于 2013-12-19 04:42:00
您有UIScreenEdgePanGestureRecognizer,它被添加到iOS7以检测从屏幕边缘平移。对于从中间平移,一个普通的平移手势识别器就足够了,你可以检查平移手势是否离中间足够近。
发布于 2013-12-19 05:10:04
使用UIScreenEdgePanGestureRecognizer,但首先检查它是否可用(因为它是iOS 7+):
if (NSClassFromString(@"UIScreenEdgePanGestureRecognizer")) {
UIScreenEdgePanGestureRecognizer *panRecognizer =
[[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self
action:@selector(handleScreenEdgePanGesture:)];
panRecognizer.edges = UIRectEdgeLeft;
}发布于 2013-12-19 04:51:38
设置手势
UIPanGestureRecognizer* panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanning:)];
[self.view addGestureRecognizer:panGesture];处理手势状态
- (void)handlePanning:(UIPanGestureRecognizer *)gestureRecognizer
{
switch ([gestureRecognizer state])
{
case UIGestureRecognizerStateBegan:
[self startDragging:gestureRecognizer];
break;
//u won't need following cases
case UIGestureRecognizerStateEnded:
case UIGestureRecognizerStateCancelled:
case UIGestureRecognizerStateFailed:
[self stopDragging:gestureRecognizer];
break;
default:
break;
}
}识别drag的起始点
- (void)startDragging:(UIPanGestureRecognizer *)gestureRecognizer
{
CGPoint pointInSrc = [gestureRecognizer locationInView:yourVIEW];
}https://stackoverflow.com/questions/20667900
复制相似问题