Mam przewijanie w pionie UIScrollView
. Chcę również obsługiwać poziome patelnie, pozwalając na domyślne zachowanie pionowego przewijania. Umieściłem przezroczysty widok UIView
nad widokiem przewijania i dodałem do niego rozpoznawcę gestu panoramowania. W ten sposób mogę uzyskać patelnie w porządku, ale wtedy widok przewijania nie otrzymuje żadnych gestów.Przechwytywanie gestów panoramy przez UIScrollView przerywa przewijanie
I zostały wdrożone następujące UIPanGestureRecognizerDelegate
metod, chcąc ograniczyć mój gest rozpoznawania tylko do patelni poziomych, ale to nie pomogło:
- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer
{
// Only accept horizontal pans here.
// Leave the vertical pans for scrolling the content.
CGPoint translation = [gestureRecognizer translationInView:self.view];
BOOL isHorizontalPan = (fabsf(translation.x) > fabsf(translation.y));
return isHorizontalPan;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return (otherGestureRecognizer == _scrollView.panGestureRecognizer);
}
Czy próbowałeś '[panGesture setCancelsTouchesInView: NO];'? Samo zwracanie TAK w 'shouldRecognizeSimultaneouslyWithGestureRecognizer' może pomóc ci znaleźć przyczynę problemu. –
Po prostu wypróbowałem, bez różnicy. – Macondo2Seattle