SORU
9 ŞUBAT 2012, PERŞEMBE


İletme görüşlere arkasında UİGesture

(İOS 4.0 veya üstü) bir iphone uygulaması üzerinde çalışan ve birden çok görünüm arasında dokunuşla ile bazı sıkıntılar yaşıyorum. Bu görünüm gibi bir yapıya sahip değilim

---> A superView 
     |
     ---> SubView - A 
     |
     ---> SubView - B (exactly on top of A, completely blocking A).

enter image description here

Temelde bir superView ve kardeş subviews A ve B. B ile aynı çerçeve, dolayısıyla tamamen gizleme.

Şimdi koşulum bu.

  1. Küme B tokatlamak ve dokunun () tek ve çift almak gerekir jestler.
  2. Küme Bir tutam jestleri almalıdır.

Bu görüşleri jest hatırlatıcılardan ekledi

UISwipeGestureRecognizer *leftSwipe  =  [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(leftSwipe:)];
[leftSwipe setDirection:(UISwipeGestureRecognizerDirectionLeft)];
leftSwipe.delegate  =   self;
[bView addGestureRecognizer:leftSwipe];
[leftSwipe release];

UISwipeGestureRecognizer *rightSwipe  =  [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(rightSwipe:)];
[rightSwipe setDirection:(UISwipeGestureRecognizerDirectionRight)];
rightSwipe.delegate   =   self;
[bView addGestureRecognizer:rightSwipe];
[rightSwipe release];

UIPinchGestureRecognizer *pinch   =  [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(handlePinch:)];
pinch.delegate    =   self;
[aView addGestureRecognizer:pinch];
[pinch release];

Biraz araştırma yaptım ve bana UIGestureRecognizerDelegate umut verici görünüyordu ve temsilci yöntemi uygulanmaktadır

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer

Küme B, temel görünümü bu olay almak umuduyla döndü. Ama böyle bir şans

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
    if ([gestureRecognizer isKindOfClass:[UIPinchGestureRecognizer class]] && [gestureRecognizer view] == bView) {
        NSLog(@"pinchGesture");
        //bView.userInteractionEnabled = NO;
        return NO;
    }
    return YES;
}

O zaman ben de devre dışı bırakılmış kullanıcı etkileşimi Küme B içinde temsilci geri arama (açıklamalı kod yukarıdaki blok), tutam jest tanınan, umut kalan kısmı jest olacak alınan Küme A. böyle bir şans var çok..

Şimdi olduğum yerde. Kabul cevabı özellik içerir nerede 15* *soru gördüm cancelsTouchesInView. Ama cancelsTouchesInView yalnızca belirli dokunma olayı iptal, değil ileri doğru olduğuna inanıyorum.

Benim gereksinimi elde etmek için başka yol yok mu? Verdiğiniz ne olursa olsun çalışmaya hazırım.

EDİT : ÖDÜL ZAMANI

Sözde benim Bir küme aslında tüm dokunuşlar alır olan 3. parti kütüphane Görünümü sınıfının bir örneğidir ve hareketleri üzerinde herhangi bir kontrol yok. Sol ve sağ tokatlamak için farklı bir uygulama istiyorum ve bu üçüncü şahıs görünümü ile çalışıyor gibi, etc tutam dokunun istiyorum. A (Küme B) sol ve sağa bira almak için üstüne bir manzara koydum. Ama şimdi ileri temel kütüphane için başka hareket olayları için istiyorum.

CEVAP
17 Mayıs 2012, PERŞEMBE


Eğer kavramak, sorunun doğru olabilir sadece bir ekleme, açık manzaralı rect, senin gibi A ve B görünüm ve uygulamak tüm hareketi: zaman yaptığın tutam jest, kontrol alt görünümünü, tokatlamak ve dokunun (tek ve çift) hareketleri kontrol alt görünümünü B. yapabilirsin farklı yolu: ) işaretçileri veya sadece gönderme almış jest için bir yöntem, sınıf, hangi denetimleri alt görünüm.

örneğin:

UISwipeGestureRecognizer *leftSwipe  =  [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(leftSwipe:)];
[leftSwipe setDirection:(UISwipeGestureRecognizerDirectionLeft)];
leftSwipe.delegate  =   subViewAcontroller;
[clearView addGestureRecognizer:leftSwipe];
[leftSwipe release];

UISwipeGestureRecognizer *rightSwipe  =  [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(rightSwipe:)];
[rightSwipe setDirection:(UISwipeGestureRecognizerDirectionRight)];
rightSwipe.delegate   =   subViewAcontroller;
[clearView addGestureRecognizer:rightSwipe];
[rightSwipe release];

UIPinchGestureRecognizer *pinch   =  [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(handlePinch:)];
pinch.delegate    =   subViewBcontroller;
[clearView addGestureRecognizer:pinch];
[pinch release];

ya da:

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
    if ([gestureRecognizer isKindOfClass:[UIPinchGestureRecognizer class]]) {
        NSLog(@"pinchGesture");
        [subViewBcontroller solvePinchGesture: gestureRecognizer];
    }
//etc
    return YES;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chriselle Lim

    Chriselle Li

    26 Ocak 2008
  • ELPRESADOR

    ELPRESADOR

    21 HAZİRAN 2008
  • kalabrandmusic

    kalabrandmus

    25 Kasım 2009