#ios #iphone #objective-c
#iOS #iPhone #objective-c
Вопрос:
У меня есть приложение с 3 uiimageviews на экране. к каждому из них подключена uipangesture. У меня возникли проблемы с определением, какое панорамное представление переходит в какое поле. (см. Изображение ниже.) Белые поля определяют, есть ли в них панорамное представление с помощью CGRectContainsPoint(). Моя основная проблема заключается в извлечении текста из меток, которые находятся в представлениях изображений. Поскольку они всегда будут разными, как я могу узнать из 1, 2, 3 вида индексации, какой вид панорамирования находится в каком поле?
Вот мой код.
if (pan.state == UIGestureRecognizerStateEnded)
{
_countSoFar; // _countSoFar is an iVar
if (CGRectContainsPoint(self.view1.frame, pan.view.center)) {
pan.view.tag = 1;
}
else if(CGRectContainsPoint(self.view2.frame, pan.view.center)) {
pan.view.tag = 2;
}
else pan.view.tag = 3;
NSLog(@"counts = %d", _countSoFar);
}
if (_countSoFar == carLevels)
{
NSString *s1 = [[self.view viewWithTag:pan.view.tag].subviews[0] text];
_countSoFar = 0; //reset count
}
Проблема с моим кодом в том, что я могу получить только 1 текстовое значение, потому что вложенные просмотры имеют только 1 на просмотр…Я не могу этого понять. Любая помощь будет оценена!
Вот изображение:
Ответ №1:
У вас есть два варианта:
- Установите свойство UIImageView и в обработчике события gesture recongnizer получите прикрепленный UIImageView и определите соответствующий контент на основе заданного вами индекса.
- Подкласс UIPanGestureRecognizer, добавьте новое поле с именем index и используйте его для захвата жестов, а затем индекса из этого
Комментарии:
1. хорошо, хорошо, какой из них, по вашему мнению, проще всего выполнить?
2. ОК. Поэтому, когда я заканчиваю каждый жест панорамирования, я бы проверил, является ли pan.view UIImageView, и если это так, то я бы установил для его тега значение любого индекса?