В течение последних четырех часов я пробовал много решений Stack Overlow, но ни один из них не помог решить мою проблему.Использование UILongPressGestureRecognizer для Subviews UIScrollview
Здесь,
- У меня есть UIScrollView
- В этом ScrollView есть один обычай UILabel и 8 пользовательских UIImageViews
- Я хочу, чтобы обнаружить долгое нажатие
Что-то вроде этого работает
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressDidFire:)];
longPress.minimumPressDuration = 0.5; [scroll addGestureRecognizer:longPress]; //scroll defined elsewhere
Однако, если я заменю свиток с любыми подвидами из свитка, длинный пресс-событие не срабатывает.
- Как я обнаружить долгое нажатие на подвид из целей прокрутки?
- Это довольно грязный взломать, однако, поскольку я могу обнаружить длинные нажатия прокрутки, есть ли способ, которым я могу обнаружить положение пресса, чтобы я мог видеть, какое конкретное подзапрос нажимается на .
Кроме того, (insert subview here).userInteractionEnabled = YES
я установить это свойство для всех моих подвидов в целях прокрутки, так что это не должно быть проблемой.
Я также пробовал использовать touchsBegan и touchsEnded, как было предложено в другом месте в Stack Overflow.
Кроме того, для представлений изображений, я установил новый UILongPressGestureRecognizer для каждого просмотра пользовательских изображений, используя цикл, как я осознает 1 зрения на жест распознаватель правил.
С первого раза IOS Developer,
Graham
P.S. Я действительно предпочитаю, если я мог бы найти решение 1. а не грязный 2.
Больше кодекса с просьбой:
В Init от вида контроллера
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressDidFire:)];
longPress.minimumPressDuration = 0.5;
[self.titleLabel addGestureRecognizer:longPress]; //titleLabel property initialized elsewhere
[mainView addSubview:self.titleLabel];
В способе "загрузки изображений"
for (NSData * dataImg in results) {
//Does some work turning data into an image, into an image view called img
img.delegate = self;
img.userInteractionEnabled = YES;
UILongPressGestureRecognizer *aLongPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressDidFire:)];
aLongPress.minimumPressDuration = 0.5;
[img addGestureRecognizer:aLongPress];
[imgContainer addSubview:img];
}
Еще больше Код + Примечания
self.вид (UIView)
-> прокрутки (UIScrollView)
-> -> MainView (UIView)
-> -> -> titleLabel (UILabel)
-> -> -> imgContainer (UIView)
-> -> -> -> изображения (UIImageViews)
[self.view addSubview:scroll];
[scroll addSubview:mainView];
[mainView addSubview:self.titleLabel];
[mainView addSubview:imgContainer];
[imgContainer addSubview:img]; //done 8x via for loop
Благодаря ответу @ RegularExpression, теперь я знаю, что mainView получает нажатие, но не его subviews, поэтому мне нужно найти способ отображения надзовов mainView над ним. :)
Другое обновление, названиеLabel works. ImageViews все еще не работают. :(
Как вы добавляете 'subViews' в' UIScrollView'? – TheTiger
Загрузите код, дайте мне сек. Спасибо за помощь. @TheTiger – GangstaGraham
Простите, что я неправильно вас понял ранее, теперь опубликовал, как я добавляю виды на свой scrollview @TheTiger – GangstaGraham