2010-10-26 13 views
5

Şu anda UIGestureRecognizers ile çakışıyor ve bu da her şeyin birbiriyle güzel olmasına neden oluyor. Ekranda, kullanıcının görüntüyü kaydırmasına ve görüntülemesine izin veren birkaç kareye (UIView) sahibim. Karenin eklendiği ana görünüme bir UIPinchGestureRecognizer ekledim, böylece kareyi odakta ölçeklendirebiliyorum. Ayrıca, her kareye UIPanGestureRecognizers ekledim, böylece ekranda hareket ettirilebilir. Parmaklarım diğerlerinin arasında hareket ederken, seçili bir kareyi ölçeklemek için çimdiklerken sorun kendini gösterir. Hata ayıklamaya dayanarak, parmaklarımın odaklanmamış karelere geçmesi durumunda, sıkışan hareketi iptal eden dokunuşları yiyorlar. "[Pan requireGestureRecognizerToFail: tutam]" özelliğini kullanmak, tutam önceliğini verir, ancak sürekli pan tanıyıcı artık tetiklenmediği için oluşturur ve yayınlar. Ayrıca UIPinchRecognizer'ı doğrudan kareye eklemeyi denedim ama işe yarıyor ama jest, karenin çok fazla ölçeklendirilmesi durumunda iyi çalışmayan karenin sınırları içinde olma zorunluluğuna sahip. Bunun etrafında bir yolu var mı? Ben bir şey özlüyorumiPhone - Birden çok UIGestureRecognizers ile çakışmalar

+0

uygulama http://developer.apple.com/library/ios/#samplecode/Touches/Introduction/Intro.html%23//apple_ref/ ([Touches_GestureRecognizers] benzer sesler Apple'dan doc/uid/DTS40007435) örnek uygulama. Aynı şeyi karelerle yapar ve aynı soruna sahip değildir. – Anna

+0

@ aBitOvious: Teşekkürler, örnek kod aslında oldukça iyi. @ Tim: Şu anda temsilci ayarlamıyorum, bu yüzden kesinlikle bakacağım, çünkü kimin ne yediğini kontrol etmesine izin vermeliyiz. Kaynağı kazandığımda daha fazla bilgi edeceğim. – Dave

+0

Çerez tabanlı hesaplarınızın yalnızca altı tanesini birleştirdim (ve buradaki her şeyi temizledim - bir haddinin hayatı asla kolay değildir). Lütfen bu hesabı kaydetmeyi düşünün. – Will

cevap

3

Sorununuzun bir yolu, tüm UIGestureRecognizers'larınız için tek bir ortak temsilci ayarlamak olabilir (bu görünüm için muhtemelen UIViewController). Bu temsilci, "Hareket" veya "Değiştirildi" durumlarında (yani bir tutam tanıyor ve işliyordu), harekete geçirme ifadesi tanıyıcı ("Değişti") durumdaysa, döndürme için NO döndürürseRecognizerShouldBegin: (UIGestureRecognizer *) jestRecognizer. Bu bir tutam jest sırasında herhangi bir pan jest tanıyıcıların yeme dokunuşlarını engellemelidir. Eğer tutam jest tanıyıcı durumunu, jest değil durumunu kontrol

@interface MyViewController : UIViewController <UIGestureRecognizerDelegate> { 
    UIGestureRecognizer *pinchGestureRecognizer; 
} 

Ve uygulanmasında

emin olun: arayüz dosyasında

, sen tutam jest tanıyıcı bir başvuru kaydetmek gerekir tanıyıcı geçirilen:

@implementation MyViewController 

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer 
{ 
    if(pinchGestureRecognizer.state == UIGestureRecognizerStateBegan || 
    pinchGestureRecognizer.state == UIGestureRecognizerStateChanged) 
    { 
    return NO; 
    } 
    else 
    { 
    return YES; 
    } 
} 
+0

@ Tim: Bu harika çalıştı! Sanırım aklımda koşan çok fazla başka senaryo var ve bir sebepten dolayı bana açıklamak değildi ama bu tamamen mantıklı. Çok teşekkürler! BTW, cevaplara nasıl cevap veriyorsunuz veya yayınlarınızı nasıl düzenliyorsunuz? Giriş yapman gerekiyor mu? Sadece isim alanlarını kullanıyorum. Yine teşekkürler. – Dave

+0

Yığın Taşması SSS sorusuna bakın "İtibar nedir?" Özetle, iyi sorular sorarak ve cevaplayarak diğer kullanıcılardan itibar kazanırsınız. Belirli eşiklerde düzenleme ve yorum yapma gibi ayrıcalıklar kazanırsınız. Zaten birileri (isminizin yanında 13) bir miktar hak kazandınız, çünkü birileri bu soruyu "oyladı" (sorunuzun yanındaki 1). –

+0

Aslında, bu soruyu sorduğunuz için, cevaplarınızdan herhangi birine, her yanıtın altındaki "yorum ekle" bağlantısıyla ilgili herhangi bir yorumu yorumlayabilmeniz gerekir. Genelde insanlar böyle cevaplar yerine cevaplara cevap veriyor, ama endişe yok ... –

İlgili konular