2017-01-16 5 views
3

UIPageViewController의 페이징 메커니즘과 함께 UITableView 작업에서 삭제하려면 스 와이프하려고합니다. 의 제스처 인식기 : 나는 'UIPageViewController 제스처 인식기에 액세스하여 스 와이프하여 삭제 허용

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { 
    if let _ = touch.view as? UITableViewCell { 
     return false 
    } 

    return true 
} 

내 문제는 내가 UIPageViewController을 찾을 수 있다는 것입니다 나는 그것의 위임을 변경하고 구현할 수 있도록의 제스처 인식기'를 UIPageViewController을 설정합니다.

myPageViewController.gestureRecognizers 
myPageViewController.view.gestureRecognizers 

myPageContentViewController.gestureRecognizers 
myPageContentViewController.view.gestureRecognizers 

이 어디를 및/또는 UIPageViewController의 기능을 삭제할 UITableView의 강타를 구현하는 더 나은 솔루션이 : 나는에서 찾고 시도?

답변

2

제스처는 해당 scrollView에 첨부되며이 속성은 공용 속성이 아닙니다.

extension UIPageViewController { 

    public var scrollView: UIScrollView? { 
     for view in self.view.subviews { 
      if let scrollView = view as? UIScrollView { 
       return scrollView 
      } 
     } 
     return nil 
    } 

} 

그런 다음 당신은 그것의 panGesture 원하는 : 어쨌든 나는있는 ScrollView 얻기 위해이 확장을 사용하여 내가 표현한대로 내 질문에 대한 대답으로 나는이 대답을 받아 들여야 생각

pageController.scrollView?.panGestureRecognizer 
+0

을하지만, 불행히도 당신은 허용되지 않습니다 panGestureRecognizer에서 대리자를 변경합니다. 치명적인 오류가 발생합니다. "UIScrollView에 내장 된 팬 제스처 인식기의 스크롤 뷰는 대리자 여야합니다." 그래서 내 문제는 아직 해결되지 않았습니다. – jjatie

+0

'- (void) requireGestureRecognizerToFail : (UIGestureRecognizer *) otherGestureRecognizer;'를 쓰면 스 와이프와 팬 간의 충돌을 피할 수 있습니다. – tgyhlsb

+0

@tgyhisb 흥미로운 아이디어. 나는 테이블 뷰 셀에서 스 와이프 제스처 인식기를 찾지 못했지만 모든 셀에 대해이 메서드를 호출해야합니다. – jjatie