سؤال

هذا أمر متوقع ، لكن لا يبدو أنني أجد وقت تشغيل يعمل بشكل صحيح كما يبدو أنه كان واجهة برمجة تطبيقات خاصة من قبل !!!!

في الوقت الحالي لدي و OS3.1.3 يستجيب لمحدد AddgerAreReCognizer !!!!

if ( [self.view respondsToSelector:@selector(addGestureRecognizer:)] ) {

        UIGestureRecognizer *recognizer;
        recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(morePress)];
        [self.view addGestureRecognizer:recognizer];
        recognizer.delegate = self;
        [recognizer release];


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

المحلول

يجب عليك التحقق من إصدار النظام بشكل صريح:

NSString *currentSystemVersion = [[UIDevice currentDevice] systemVersion];
if([currentSystemVersion compare:@"3.2"] == NSOrderedAscending) {
    //add gesture recognizer
} else {
    // :(
}

نصائح أخرى

لا يتم دعم UigesturerEcognizer قبل iOS 3.2. حتى لو كانت الطريقة addGestureRecognizer: موجود ، هذا لا يعني أنه آمن للاستخدام.

لقد كانت بالفعل واجهة برمجة تطبيقات خاصة ولم تدعمها في الإصدارات قبل 3.2.

يقول مستند Apple:

لتحديد وقت التشغيل ما إذا كان يمكنك استخدام معرفات الإيماءات في التطبيق الخاص بك ، واختبر ما إذا كان الفصل موجودًا ، وإذا كان كذلك ، تخصيص مثيل ومعرفة التحقق مما إذا كان يستجيب لموقع Selector LocationInview:. لم تتم إضافة هذه الطريقة إلى الفصل حتى iOS 3.2.

عينة من الرموز:

UIGestureRecognizer *gestureRecognizer = [[UIGestureRecognizer alloc] initWithTarget:self action:@selector(myAction:)];

if (![gestureRecognizer respondsToSelector:@selector(locationInView:)]) {
    [gestureRecognizer release];
    gestureRecognizer = nil;
}
// do something else if gestureRecognizer is nil

استكشاف:

لتحديد ما إذا كان الفصل متاحًا في وقت التشغيل في إصدار iOS معين ، يمكنك عادةً التحقق مما إذا كان الفصل لا شيء. لسوء الحظ ، هذا الاختبار ليس دقيقًا بشكل نظيف لـ UigesturereCognizer. على الرغم من أن هذا الفصل كان متاحًا للجمهور بدءًا من iOS 3.2 ، إلا أنه كان في تطوير فترة قصيرة قبل ذلك. على الرغم من وجود الفصل في إصدار سابق ، إلا أن استخدامه وغيرها من فئات الإبلاغ عن الإيماءات غير مدعوم في هذا الإصدار السابق. يجب ألا تحاول استخدام مثيلات تلك الفصول.

تحقق من النص الكامل هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top