uilongpressgesturerecognizer дает сбой, даже если он не реализован
Я перепробовал все возможные варианты поиска, но ничего подобного не нашел за одну неделю. Я делаю приложение, которое отображает табличное представление. Ячейки (сделанные пользовательским классом и с помощью Interface Builder) можно перетаскивать с помощью UIPanGestureRecognizer, который является pu в классе Cell. Все работает нормально, за исключением того, что когда я держу палец на ячейке, приложение вылетает с ошибками:
-[UILongPressGestureRecognizer translationInView:]: unrecognized selector sent to instance 0x94670a0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UILongPressGestureRecognizer translationInView:]: unrecognized selector sent to instance 0x94670a0'
Я знаю, что это значит (обычно неверный параметр отправляется экземпляру), но я действительно не знаю, как это возможно, поскольку в моем коде нет следа UILongPressGestureRecognizer. Я пытался перехватить LongPressGestureREcognizer ВЕЗДЕ (в классе ячеек, в классе табличного представления, перед выделением каждой ячейки), но ошибка все та же (я посмотрел на многие потоки здесь в теме и, поверьте мне, синтаксис был правильным.
Если вам нужна какая-либо другая документация, не стесняйтесь спрашивать (это мой первый пост здесь, я не знаю точно, что я должен показать).
Спасибо за вашу драгоценную помощь.
Хорошо, проблема все еще существует, извините за беспокойство :( Мне как-то удалось установить точку останова и напечатать трассировку стека. Вот она:
0 uBellow 0x0000ac57 -[OpinionCell gestureRecognizerShouldBegin:] + 71
1 UIKit 0x00914939 -[UIGestureRecognizer _shouldBegin] + 1334
2 UIKit 0x0091181a -[UIGestureRecognizer setState:] + 152
3 UIKit 0x00921cea -[UILongPressGestureRecognizer enoughTimeElapsed:] + 127
4 libobjc.A.dylib 0x017186b0 -[NSObject performSelector:withObject:] + 70
5 UIKit 0x00787954 -[UIDelayedAction timerFired:] + 83
6 Foundation 0x0114d2c0 __NSFireTimer + 97
7 CoreFoundation 0x01bce376 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 22
8 CoreFoundation 0x01bcde06 __CFRunLoopDoTimer + 534
9 CoreFoundation 0x01bb5a82 __CFRunLoopRun + 1810
10 CoreFoundation 0x01bb4f44 CFRunLoopRunSpecific + 276
11 CoreFoundation 0x01bb4e1b CFRunLoopRunInMode + 123
12 GraphicsServices 0x022337e3 GSEventRunModal + 88
13 GraphicsServices 0x02233668 GSEventRun + 104
14 UIKit 0x00648ffc UIApplicationMain + 1211
15 uBellow 0x0000287d main + 141
16 uBellow 0x000027a5 start + 53
Приложение блокирует код:
-(BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer {
CGPoint translation = [gestureRecognizer translationInView:[self superview]];
редактировать Я решил, перехватывая UILongPressGestureRecognizer, это безопасный способ?
-(BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer {
if([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]]){
return NO;
}else{
CGPoint translation = [gestureRecognizer translationInView:[self superview]];
// Check for horizontal gesture
if (fabsf(translation.x) > fabsf(translation.y)){
return YES;
}
}
return NO;}