2013-07-12 10 views
13

내 앱에 테이블 뷰가 있고 (이 앱에는 스크롤 인 기능이 포함되어 있음)이보기는 제스처 인식기 (예 : Facebook 앱)와 함께 켜고 끕니다.제스처 인식기를 사용하면 표보기가 스크롤되지 않습니다.

[테이블보기를 화면에 밀어 넣기] 단추를 사용하면 잘 작동하지만 제스처 인식기를 사용하면 테이블보기를 더 이상 스크롤 할 수 없습니다.

[self.view addGestureRecognizer:self.slidingViewController.panGesture]; 

누군가가 아이디어가 : 여기

문제와 제스처 인식기의 코드를 무엇입니까?

답변

33

제스처는 기본적으로 한 번에 하나의 제스처 만 인식 할 수 있기 때문에 스크롤보기 동작이 작동하지 않을 수 있습니다. 당신의 제스처의 대리인으로 자신을 추가하고 구현하는 시도 : 나는 그것을 바로보기를 얻을 경우

+0

이 답변에 많은 감사를드립니다! 하지만 xcode 전문가가 아니기 때문에이 코드를 구현 한 후에는 무엇을해야합니까? – user2576304

+0

그래서 컨트롤러를 제스처의 '위임자'로 추가하고 위의 메소드를 구현했지만 여전히 문제가 있습니까? – Wain

+0

내 컨트롤러를 대리인으로 추가하려면 어떻게해야합니까? 위임자의이 개념은 미지입니다. – user2576304

1

를 구현하고, 또한

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    return YES; 
} 

self.slidingViewController.panGesture.delegate = self; 

프로토콜 목록에 <UIGestureRecognizerDelegate>을 추가 당신 ' 제스처 인식기를에 추가하면 테이블보기가됩니다. 기본적으로 UIScrollView (암시 적으로 UITableView) 클래스는 스크롤을 위해 팬 제스처 인식기를 사용하고 제스처 인식기가이를 방해합니다. 다른보기를 테이블보기의 컨테이너로 사용하고 팬 제스처 인식기를 추가하면 작동합니다.

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
    return true 
} 
5

다음은 빠른 버전입니다.

1-이 기능 부가 gesture.delegate = self (after you defined the long press gesture)

-3- 추가 UIGestureRecognizerDelegate

2- 추가 :

의해 고정

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {return true}

2

나는 테이블보기에서 길게 누르면 제스처를 정의하고 그 위에 나는 길게 누르면 테이블을 스크롤 할 수 없다는 동일한 문제가 있었다 :

+0

제스처 인식기가 사용자 정의 레이블 클래스에서 tableview에서 사용되는 경우이를 적용하는 방법에 대한 권장 사항은 무엇입니까? : - | –

4

I 안으로 UIPangesture을 사용한 내 UItableview 및 avo 이 이드는 아래에서 사용한 대표자입니다.

//This method helped me stopped up/down pangesture of UITableviewCell and allow only vertical scroll 
override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool { 
    if let panGestureRecognizer = gestureRecognizer as? UIPanGestureRecognizer { 
     let translation = panGestureRecognizer.translationInView(superview) 
     if fabs(translation.x) > fabs(translation.y) { 
      return true 
     } 
     return false 
    } 
    return false 
} 
관련 문제