2014-11-27 3 views
0

Я разрабатываю приложение iOS, основанное на дополненной реальности. Предполагается, что пользователь установит свое расстояние от стены до UISlider. Затем он выберет фотографию из галереи и посмотрит, как она будет выглядеть на стене. Приложение должно масштабировать UIImage в соответствии с расстоянием от пользователя от стены, и пользователь может перетащить его, чтобы посмотреть, как он выглядит на стене.UILongPressGestureRecognizer привязана только применительно к UIImageView

Я хочу применить UILongPressGestureRecognizer к добавленному UIImage, чтобы его можно было удалить, т. Е. Отменить удержание и удаление.
Это код, я применил, чтобы импортировать изображение, которое уже в моей библиотеке я сделать импорт из галереи позже:

self.myImage = [UIImage imageNamed:@"myimage.png"]; 
self.myImageView = [[UIImageView alloc] initWithImage:self.myImage]; 
self.myImageView.userInteractionEnabled = YES; 
CGRect cellRectangle; 
self.myImageView.contentMode = UIViewContentModeScaleAspectFit; 
cellRectangle = CGRectMake(0, 0, self.myImage.size.width/5, self.myImage.size.height/5); 

И UILongPressGestureRecognizer это код:

self.lpgr = [[UILongPressGestureRecognizer alloc] 
             initWithTarget:self action:@selector(handleLongPressGestures:)]; 
self.lpgr.minimumPressDuration = 2.0; //seconds 
self.lpgr.accessibilityFrame = cellRectangle; 

[self.customCam addGestureRecognizer:self.lpgr]; 

Где customCam - вид, на котором показана камера для AR.

- (void)handleLongPressGestures:(UILongPressGestureRecognizer *)sender 
{ 
    if ([sender isEqual:self.lpgr]) { 
     if (sender.state == UIGestureRecognizerStateBegan) 
     { 
      CGPoint p = [self.lpgr locationInView:self.myImageView]; 
      NSLog(@"TapLong Run on points %@",NSStringFromCGPoint(p)); 
     } 
    } 
} 

Проблема с этим кодом он применяет UILongPressGestureRecognizer на все customCam зрения.

Как связать его, чтобы он оставался в пределах myImageView. Я также попытался это сделать:

[self.myImageView addGestureRecognizer:self.lpgr]; 

, но это не сработало, и я также добавил этот self.myImageView.userInteractionEnabled = YES;

+0

[self.customCam addGestureRecognizer: self.lpgr]; вы добавили здесь, сохраните этот self.myImageView – Balu

+0

@Balu Я пробовал этот, но он ничего не делал. Это никогда не доходило до функции «handleLongPressGestures», если условие! Но на customCam он делает. –

+0

Что я думаю о том, чтобы установить другое условие, что если координаты жеста находятся в координатах UIImageView, то он выполнит действие. Так вы можете мне помочь? –

ответ

0

где вы добавили [self.customCam addGestureRecognizer:self.myImageView]; первый надстройку вид изображения в настраиваемое представление затем добавить себя. lpgr в myImageview. заменить эту линию [self.customCam addGestureRecognizer:self.lpgr];

[myImageView addGestureRecognizer:self.lpgr]; и попробуйте

+0

Пробовал, но это не сработало. Нет ошибки, но код не выполнял функции метода handleLongPressGestures. –

+0

handleLongPressGestures называется? – Sport

+0

Добавляя эту строку '[self.customCam addGestureRecognizer: self.myImageView];' и заменив другую линию, как вы сказали. Я получил это предупреждение «непризнанный селектор, отправленный экземпляру», и он не показывал изображение. Кажется, что пользовательский слой CAM находится выше уровня myImageView. –

Смежные вопросы