SORU
17 EKİM 2011, PAZARTESİ


UİPageViewController Jest tanıyıcıları

Şimdi bir süre için bir uygulama üzerinde çalışıyorum, ama bu soruyu NDA nedeniyle isteyemem.

Benim Viewcontroller ile UİPageViewController bir yük var. Denetleyicileri PageViewControllers tarafından yazılan jest tanıyıcıları hangi düğmeler var görünümü. Örneğin viewcontroller sağ tarafında bir düğme var ve bu düğmeye bastığınızda, PageViewController devraldı ve sayfa değiştirir.

Nasıl düğmeye dokunarak almak ve PageViewController içinde hareket algılayıcı iptal yapabilir miyim?

Bu PageViewController benim ViewController manzarası olan bir küme yapar bence.

Hareketleri tüm kapatabilirim biliyorum, ama bu benim aradığım etkisi değil.

İstiyorumtercih ederimapple bu sınıfın alt sınıfı değildir dediği gibi PageViewController alt sınıf için değil.

CEVAP
16 Kasım 2011, ÇARŞAMBA


-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch daha iyi PageViewController dokunuşun ne zaman ve kontrol için geçersiz kılabilirsiniz. ""Dev API Gesture Recognizers . Dokunduğu Analiz Jest Tanıyıcıları Önleme bak

Benim çözüm UİPageViewController için RootViewController bu gibi görünüyor:

ViewDidLoad

//EDITED Need to take care of all gestureRecogizers. Got a bug when only setting the delegate for Tap
for (UIGestureRecognizer *gR in self.view.gestureRecognizers) {
    gR.delegate = self;
}

Geçersiz kılma:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    //Touch gestures below top bar should not make the page turn.
    //EDITED Check for only Tap here instead.
    if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) {
        CGPoint touchPoint = [touch locationInView:self.view];
        if (touchPoint.y > 40) {
            return NO;
        }
        else if (touchPoint.x > 50 && touchPoint.x < 430) {//Let the buttons in the middle of the top bar receive the touch
            return NO;
        }
    }
    return YES;
}

Ve RootViewController olarak UİGestureRecognizerDelegate ayarlamayı unutmayın.

(BİLGİNİZE, sadece Manzara modunda değilim.)

EDİT - yukarıdaki kodu Swift 2 tercüme:

ViewDidLoad

for gr in self.view.gestureRecognizers! {
    gr.delegate = self
}

Yapmak sayfa görünümü denetleyicisi UIGestureRecognizerDelegate o devralır:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
    if let _ = gestureRecognizer as? UITapGestureRecognizer {
        let touchPoint = touch .locationInView(self.view)
        if (touchPoint.y > 40 ){
            return false
        }else{
            return true
        }
    }
    return true
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ama Jenna

    Ama Jenna

    29 NİSAN 2011
  • bombjack2991

    bombjack2991

    29 HAZİRAN 2008
  • kimaliz

    kimaliz

    18 Temmuz 2006