تعطل UigesturerEcognizer على
-
30-09-2019 - |
سؤال
هذا أمر متوقع ، لكن لا يبدو أنني أجد وقت تشغيل يعمل بشكل صحيح كما يبدو أنه كان واجهة برمجة تطبيقات خاصة من قبل !!!!
في الوقت الحالي لدي و 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 ، إلا أنه كان في تطوير فترة قصيرة قبل ذلك. على الرغم من وجود الفصل في إصدار سابق ، إلا أن استخدامه وغيرها من فئات الإبلاغ عن الإيماءات غير مدعوم في هذا الإصدار السابق. يجب ألا تحاول استخدام مثيلات تلك الفصول.
تحقق من النص الكامل هنا.