2011-11-21 26 views
19

'da 2 parmakla kaydırma özelliğini devre dışı bırakma UIScrollView numaralı telefonumda iki parmakla kaydırma özelliğini devre dışı bırakmak istiyorum.
Bunu sınıflandırma ve yerleşik jest aşağıdaki kodla tanıyıcıları tweaked: çalışmak görünmüyor NedenseUIScrollView

for (UIGestureRecognizer *mgestureRecognizer in scroller.gestureRecognizers) {  
    if ([mgestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) 
    { 
     UIPanGestureRecognizer *mpanGR = (UIPanGestureRecognizer *) mgestureRecognizer; 
     mpanGR.minimumNumberOfTouches = 1; 
     mpanGR.maximumNumberOfTouches = 1; 

    } 

    if ([mgestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]]) 
    { 
     UISwipeGestureRecognizer *mswipeGR = (UISwipeGestureRecognizer *) mgestureRecognizer; 
     mswipeGR.numberOfTouchesRequired = 1; 
    } 

, maximumNumberOfTouches. Bir ya da iki parmağımla devam edebilirim. Her iki özelliği de 2 olarak değiştirirseniz, tek parmakla kaydırma işlemini başarıyla devre dışı bırakabilir ve iki dokunuş gerektirebilir.

Herhangi bir fikrin var mı?

cevap

19

Bunun eski bir iş parçacığı olduğunu anlıyorum, ama bunu anlamak uzun zaman aldı, bu yüzden paylaşacağımı düşündüm. belki doğrudan ui tava jest tanıyıcı kullanabilirsiniz, 5.0 üzerinde iOS SDK kullanıyorsanız

// set up a two-finger pan recognizer as a dummy to steal two-finger scrolls from the scroll view 
// we initialize without a target or action because we don't want the two-finger pan to be handled 
UIPanGestureRecognizer *twoFingerPan = [[UIPanGestureRecognizer alloc] init]; 
twoFingerPan.minimumNumberOfTouches = 2; 
twoFingerPan.maximumNumberOfTouches = 2; 
[scrollView addGestureRecognizer:twoFingerPan]; 
+1

benim için işe yaramadı – Pascalius

+0

olmamalı * 1 *: Sen benim cevap çözüm bulabilirsiniz

minimum ve maksimum için? (2 yerine?) – yonel

+1

Kod, 2 parmakla kaydırma hareketlerini yiyerek 2 parmakla kaydırma özelliğini devre dışı bırakır.Yani min ve maksimum dokunuşlar 2 olmalıdır. –

3

: İşte kaydırma iki parmak devre dışı bırakmak için bunu yaptık.

@property (strong, nonatomic) IBOutlet UIScrollView *scrollView; 

...... 

[self.scrollView.panGestureRecognizer setMinimumNumberOfTouches:1]; 
[self.scrollView.panGestureRecognizer setMaximumNumberOfTouches:1]; 
+0

Teşekkürler drskur ... Bu benim için harika çalışıyor –

0

Bu soruyu yeniden açmak istiyorum.

@property (strong, nonatomic) IBOutlet UIScrollView *scrollView; 

...... 

[self.scrollView.panGestureRecognizer setMinimumNumberOfTouches:1]; 
[self.scrollView.panGestureRecognizer setMaximumNumberOfTouches:1]; 

Ben iOS 7 ve iOS 8 bu çözüm denedim ve setMaximumNumberOfTouches geliyor bana: 1 etkisi yoktur. 2 veya 3 parmakla kaydırma yapmak mümkündür. :(

0

Ben bu hala iOS 8'de bir konudur onaylamak, ancak UIPanGestureRecognizer bir UIScrollView altında yatan olduğunda. Taze UIPanGestureRecognizer ile bir UIView oluşturma ve beklendiği gibi mülkiyet çalışır onun maximumNumberOfTouches ayarı.

Ekleyen rdar :. // 20890684 ve http://openradar.appspot.com/radar?id=6191825677189120 kopyalanan dupe çekinmeyin

0

SORUN.

zaman UIPanGestureRecognizer temel bir UIScrollView (maalesef UIPageViewController etki etmez ki) maximumNumberOfTouches beklendiği gibi davranmak değildir - minimumNumberOfTouches ancak her zaman alt ucu doğru sınırlar.

Bu parametrelere bakarken işlerini yapıyor gibi görünüyorlar - sadece UIScrollView onları onurlandırmıyor ve değerlerini görmezden geliyor!


ÇARE:

UIScrollView scrolling only with one finger