2016-04-05 31 views
0

Tek parmak hareketini tanıyan özel bir jest tanıyıcıya sahip özel bir yarı saydam görünümüm var. Tam ekran görünümünde açılır. Kullanıcı, tutam ve döndürme hareketlerini kullanarak tam ekran görünümü ile etkileşime girer.Alttaki görünümde jest tanımayı kesmeden pop-up görünümde hareketler nasıl tanınır?

Neyi başarmaya çalıştığım, pop-up görünümünün, kullanıcının pop-up görünümünün sınırları dahilinde bile tam ekran görüntüsünü çimdiklemeye ve döndürmeye devam etme kabiliyetine müdahale etmesini engellemektir. Pop-up görünümün sadece özel tek parmakla jest tanıyıcıma yanıt vermesi gerekiyor.

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    if (event.allTouches.count > 1) { 
     return NO; 
    } 

    ... 
} 

Yukarıdaki kod o kırık olabilir, ama pointInside çağrıldığında ne yazık ki dokunuşlar doldurulmaz. Başka önerileriniz lütfen?

cevap

0

olduğunu. Umarım birilerine yardım eder. Pop-up görünümün ilklendirilmesinde, jüri tanıyıcıyı açılır pencerenin görünümünden ziyade süper görüntüye veya tam ekran görünümüne eklemeniz yeterlidir.

self.recognizer = [[MyGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)]; 
    [fullscreenView addGestureRecognizer:self.recognizer]; 

Ve sonra devre dışı kullanıcı etkileşimi:

self.userInteractionEnabled = NO; 

Bu pop-up görünümünde jest etkilemez ve ilişkili jestler hedef yine görüşe açılan olabilir pop-up altındaki görünümler de iyi çalışıyor. Eğer birbirleriyle yarışırlarsa, lorenzoliveto'nun yanıtındaki geçersiz kılmalar bunu sıralayabilir.

0

UIGestureRecognizerDelegate protokolüne ihtiyacınız olduğunu düşünüyorum. Özellikle bu yöntemde:

- gestureRecognizer:shouldReceiveTouch: 

- gestureRecognizer:shouldRequireFailureOfGestureRecognizer: 
- gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer: 
+0

Özel hareket algılayıcısının 'shouldReceiveTouch'ında her zaman' NO' döndürmeyi denedim. Bu, tanıyıcıyı parkurun aktif hale getirmesini durdurur, ancak açılan görünümdeki dokunuşlar hala tam ekran görüntüsünün jest tanımlayıcılarına ulaşamaz. – Nestor

0

Sen benim yapmanız istediğimizi yapabiliriz durumuna göre dokunur hiçbir var ve nerede touchesBegan kullandıkları yöntemler

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event; 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event; 
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event; 

altında kullanabilirsiniz.

Aşağıda çok basit bir cevap buldu İki günlük çalışma sonrasında örnek kod

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
//Varible used for counting touches 
     int nFingers += [touches count]; 
     //finger points 
     for (UITouch *touch in touches) { 
      if (nFingers < 1){ 
       CGPoint location = [touch locationInView:self]; 
      } 
     } 
    }