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

  • FullMag

    FullMag

    15 ŞUBAT 2007
  • Joshua Benedict

    Joshua Bened

    26 EKİM 2013
  • TVNorge

    TVNorge

    5 EKİM 2006