這不會爲UIPageViewController的內置平移手勢設置手勢委託,但我有些如何通過獲取底層滾動視圖,然後在滾動視圖上設置新的平移手勢來解決手勢衝突。這個新的Pan手勢具有UIPageViewController作爲它的委託,因此我能夠獲得手勢委託的調用。
-(UIScrollView *)scrollViewInsidePageControl {
for (UIView * view in self.view.subviews) {
if([view isKindOfClass:[UIScrollView class]])
return (UIScrollView *)view;
}
return nil;
}
而在-viewDidLoad:
self.internalScrollView = [self scrollViewInsidePageControl];
self.customPanGesture = [UIPanGestureRecognizer new];
self.customPanGesture.delegate = self;
[self.internalScrollView addGestureRecognizer:_customPanGesture];
上面的代碼的協議方法的UIPageViewController
實例
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
if(otherGestureRecognizer.view == self.internalScrollView)
return NO;
else
return YES;
}
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
if (gestureRecognizer == _customPanGesture)
{
// Did required handling here
}
return YES;
}
進行的呼叫爲
UIGestureRecognizerDelegate
在此之後,委託不接收中提到的方法調用UIGestureRecognizerDelegate協議。 – BangOperator