2014-07-07 3 views
-2

뷰 내부에 두 개의 하위 뷰가 있습니다. 프레임은 동일합니다. 뷰에는 스 와이프 왼쪽 제스처 인식기가 있고 B 뷰에는 스 와이프 오른쪽 제스처 인식기가 있습니다. B가 A 뒤에 있기 때문에 왼쪽으로 제스처 할 때만 움직일 수 있습니다. 어떻게 둘 다받을 수 있습니까?다른보기 뒤에 터치 이벤트를받는 방법?

+0

추가 swipegesture의 recongnizer. 스 와이프를 처리해야합니다. –

답변

2
  1. 아니라, 그 뒤에이다, 때문에 다시보기가 응답하지 않습니다를.
  2. 두 동작이 동시에 (왼쪽 + 오른쪽으로 동시에) 응답하려면 UIGestureRecognizerDelegate을 둘 중 하나에 추가하고 shouldRecognizeSimultaneouslyWithGestureRecognizer을 다음과 같이 처리하십시오.
  3. B가 제스처에 응답하도록하려면 A가 부분적으로 숨겨져 있어도 계층 구조를 다시 생각해보십시오. & B (C라고 함)의 세 번째보기를 B와 동일한 크기로 배경에 추가합니다 제스처 인식기.

, 대리인 : 창

// leftGesture 
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
    shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer 
    *)otherGestureRecognizer 
{ 
    return otherGestureRecognizer == rightGesture; 
} 
+0

답장을 보내 주셔서 감사합니다.하지만 원하는 것은 아닙니다. 나는 그 글을 편집한다. – ZZB

+0

조회 계층 구조 + 제스처가 손에 들어갑니다. 당신의 그림에 따르면, A는 B 위에 있습니다; B의 숨겨진 부분을 선택자에 응답하려면 B와 동일한 크기 + 크기의 보이지 않는보기 C를 만들고 가장 위에 놓는 것이 가장 좋습니다. – SwiftArchitect

+0

Fix ** this ** question so 그것은 답변과 일치합니다. 이제 고아가 된 질문에 대한 승인 된 응답을 받았습니다. 그런 다음 수정 사항을 ** 다른 ** 게시물로 작성하십시오. – SwiftArchitect

1

어떻게 둘 모두받을 수 있습니까?

제스처 인식기를 모두 A를보기에 추가하면 A가 앞에 있기 때문에 A를 봅니다. 보기 B에서 오른쪽 슬쩍 제스처를 처리해야하므로보기 B를 오른쪽 슬쩍 제스처 인식기의 대상으로 설정하십시오.

더 나은 옵션은보기 컨트롤러를 두 제스처 인식기의 대상으로 만들고 사용자의 제스처로 수행 할 작업을 분류 할 수 있습니다. 이렇게하면 사용자 인터페이스가 설정되는 방식을 알기 때문에 비즈니스에서 뷰를 가져 오는 데 도움이됩니다. 뷰 컨트롤러의 지침을 따라하면됩니다. 당신이 그 계획을 채택 할 경우, 뷰 컨트롤러는 부분에 다음과 같습니다

- (void)viewDidLoad 
{ 
    UISwipeGestureController *leftSwipe = [[UISwipeGestureController alloc] initWithTarget:self action:@selector(leftSwipe:)]; 
    leftSwipe.direction = UISwipeGestureRecognizerDirectionLeft; 
    UISwipeGestureController *rightSwipe = [[UISwipeGestureController alloc] initWithTarget:self action:@selector(rightSwipe:)]; 
    rightSwipe.direction = UISwipeGestureRecognizerDirectionRight; 

    [self.viewA addGestureRecognizer:leftSwipe]; 
    [self.viewA addGestureRecognizer:rightSwipe]; 
} 

- (IBAction)leftSwipe:(id)sender 
{ 
    [self.viewA doSomething]; 
} 

- (IBAction)rightSwipe:(id)sender 
{ 
    [self.viewB doSomethingElse]; 
} 
+0

답장을 보내 주셔서 감사합니다.하지만 원하는 것은 아닙니다. 내 질문을 명확하게하기 위해 게시물을 편집합니다. – ZZB

+0

편집을 이해하는 것이 매우 어렵고, 그런 식으로 일을하고 싶은 이유가 분명하지 않습니다. 더 자세한 설명이 필요합니다. – Caleb

+0

스크린 샷과 함께 세부 정보를 추가합니다. 내 불명확 한 설명에 대해 유감스럽게 생각합니다. – ZZB

관련 문제