سؤال

لقد قمت بإعداد ملف UISwipeGestureRecognizer:

UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:delegate action:@selector(handleSwipeGesture:)];
swipe.direction = UISwipeGestureRecognizerDirectionUp;
[self addGestureRecognizer:swipe];
[swipe release];

انتقاد يجعل اللاعب يتحرك في اتجاه التمرير. أحتاج إلى أن يستمر اللاعب في التحرك ، حتى يتم رفع الإصبع الذي صنع التمرير من الشاشة. لقد حاولت استخدام touchesended: الطريقة ولكنها تتطلب إجراء لمسة غير محددة أولاً. كيف يمكنني الحصول على اللمسة التي جعلت لفتة التمرير؟ كيف يمكنني اكتشاف عندما يتم رفع هذه اللمسة من الشاشة؟

هل كانت مفيدة؟

المحلول 2

بعد النظر من خلال وثائق Apple ، وجدت هذه الخاصية لـ UigesturereCognizer:

@property(nonatomic) BOOL cancelsTouchesInView

وضعه على NO يتيح لمواجهة عرض المتلقي جميع اللمسات التي تعد جزءًا من تسلسل اللمس متعدد اللمس الذي يتلقاه معرف الإيماءات.

نصائح أخرى

أعلم أنك راضٍ بالفعل عن إجابة على هذا السؤال ، لكنني اعتقدت أنني قد أوصي باستخدام uipangesturerecognizer بدلاً من لفتة التمرير.

مع معرف الإيماءات ، يتم إرسال الرسالة إلى المحدد مرارًا وتكرارًا حتى يتوقف المستخدم عن سحب إصبعه ، وعند هذه النقطة يسمى المحدد مرة أخرى ، ويمر أ gesture.state من UIGestureRecognizerStateEnded. مثال:

- (void)panGesture:(UIPanGestureRecognizer *)gesture {
    if (gesture.state == UIGestureRecognizerStateEnded) {
        CGPoint translation = [gesture translationInView:self.view];
        //This contains the total translation of the touch from when it 
        //first recognized the gesture until now.
        //
        //e.g (5, -100) would mean the touch dragged to the right 5 points, 
        //and up 100 points.
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top