응답이 늦었지만 스 와이프 전에 팬이 인식되도록하려는 것과 비슷한 문제가있었습니다. 내가 작동하도록 할 수있는 유일한 방법은 길게 누르거나 비슷한 것을 사용하여 팬 제스처를 팬이나 슬쩍으로 사용하는 플래그를 설정하는 것이 었습니다. 나는 스 와이프를 전혀 사용하지 않았다. 즉 : 그래서 본질적으로
- (void) handleLongPress : (UILongPressGestureRecognizer *) gestureRecognizer
{
if (gestureRecognizer.state == UIGestureRecognizerStateBegan)
{
_canSwipe = YES;
}
else if (gestureRecognizer.state == UIGestureRecognizerStateEnded)
{
_canSwipe = NO;
}
}
- (void) handleDragging : (id) sender
{
UIPanGestureRecognizer *pan = (UIPanGestureRecognizer *)sender;
GLKVector2 dragDelta = GLKVector2Make(0., 0.);
if (pan.state == UIGestureRecognizerStateBegan || pan.state == UIGestureRecognizerStateChanged)
{
_mousePosition = [pan translationInView:self.view];
if (_beginDragging == NO)
{
_beginDragging = YES;
}
else
{
dragDelta = GLKVector2Make(_mousePosition.x - _prevMousePosition.x, _mousePosition.y - _prevMousePosition.y);
}
_prevMousePosition = _mousePosition;
}
else
{
_beginDragging = NO;
}
if (_canSwipe == YES)
{
if (dragDelta.x > 0)
{
_canSwipe = NO;
[self.navigationController popToRootViewControllerAnimated:YES];
NSLog(@"swipe right");
}
else if (dragDelta.x < 0)
{
_canSwipe = NO;
[self performSegueWithIdentifier:@"toTableSegue" sender:pan];
NSLog(@"swipe left");
}
}
else
{
_dragDeltaTranslation = GLKVector2Make(dragDelta.x/90, dragDelta.y/90);
_translationXY = GLKVector2Make(_translationXY.x + _dragDeltaTranslation.x, _translationXY.y - _dragDeltaTranslation.y);
}
}
: 최대한 빨리 출시로, 상태가 UIGestureRecognizerStateEnded로 이동하기 때문에
- 사용 길게 누르면 (또는 다른 메커니즘) (길게 누름이 좋은 강타의 상태를 활성화)
- 그런 다음 팬 방향을 사용하여 스 와이프 방향을 결정하십시오. `(UIGestureRecognizer *) YES 반환`otherGestureRecognizer` 방법 : (UIGestureRecognizer *) gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer : (BOOL) gestureRecognizer - 2.
는'시도 했습니까? – Akhilrajtr
나는 동시에 그것을 원하지 않는다 - 나는 왜 질문에 "독점적 인"것을 썼다. –