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

  • Ayite Atiwoto (superjiffrey)

    Ayite Atiwot

    29 EYLÜL 2010
  • Lamborghini

    Lamborghini

    13 Aralık 2005
  • metal571

    metal571

    30 Mayıs 2006