مشاكل مع UISwipeGesturerEcognizer و UITAPESTURERECOONIZER و MPMOVIEPLAYERCONTROLLER :-(
-
27-09-2019 - |
سؤال
هذا جعلني صامت تماما!
لدي معرفات التعرف على إيماءة الصنبور لقوائم العرض/إخفاء ...
لدي أيضًا معرف إيماءة التمرير للضرب اليسار واليمين بين الشاشات ...
بعد ذلك ، لدي أيضًا mpmovieplayerController لتشغيل الفيديو مرة أخرى على الشاشة.
أنا تنفذ gestureRecognizer:shouldReceiveTouch:
واستبعاد جميع uicontrols وأي شيء لديه البادئة "MP".
المشكلة هي ، كلما قمت بتمرير اليسار واليمين على عناصر التحكم في مشغل الفيلم ، shouldReceiveTouch
يلاحظ فقط معرف إيماءات الصنبور ، وليس التمرير. كما أنه لا يتتبع بشكل صحيح ، ومع ذلك لا يزال يؤدي إلى طريقة التمرير.
لقد حاولت النظر في gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer
لكن هذا مجرد خلطني حقًا ، لأنه يحتوي أيضًا على uipangesturerecognizer ... من أين جاء ذلك؟
الرجاء المساعدة ، أنا متعب ولدي موعد نهائي كبير ... ولا يمكنني عمله :(
شكرا لكم جميعا!
: جو
المحلول 2
حسنًا ، يجب أن أعتذر ... السبب في عدم تلقيه shouldReceiveTouch
كانت الرسائل لأنني لم أكن أقوم بتعيين مندوبها !! يا له من numpty. كنت أقوم بتعيين المندوب لإيماءة الصنبور ، ولكن ليس التمرير. الآن كل شيء يعمل بشكل جيد.
آسف! :-)
نصائح أخرى
كنت نفس المشكلة. إليك ما فعلته للتغلب على المشكلة. في الأساليب [Self Dosomething ...] أقوم ببعض الرسوم المتحركة وإذا انتهى الرسوم المتحركة ، فإنها تحدد الحالة الممكّنة للاعتراف مرة أخرى إلى نعم. كن على دراية بالحقيقة ، أنك تعيد التعرف الصحيح على تمكين! (هنا يجب علي (يسار/يمين) ، وبالتالي فإن مجموعة GesturerEcognizers لديها إدخالان.
- (void)handleSwipeGesture:(UISwipeGestureRecognizer *)recognizer { if (recognizer.state == UIGestureRecognizerStateEnded && recognizer.enabled) { recognizer.enabled = NO; if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) { [self doSomethingInteresting]; } else { [self doSomethingElseInteresting]; } } }
[UIView transitionWithView:self.containerView duration:kAnimationDuration options:UIViewAnimationOptionTransitionCurlDown animations:^{ your animations } completion:^(BOOL finished) { if (self.containerView.gestureRecognizers.count) { ((UISwipeGestureRecognizer *)[self.containerView.gestureRecognizers objectAtIndex:0]).enabled = YES; } }];