Массив жеста UIImageView
На мой взгляд, есть массив UIImageView. Я попытался добавить жест панорамирования, мой UIImageView может двигаться. Но проблема в том, что после того, как я вставил второй UIImageView в массив, я могу переместить UIImageView, когда я касаюсь предыдущего UIImageView.
Как я могу ограничить касание в текущем UIImageView?
- (void)addNewImageToArray: (UIImage *)inImage
{
UIImageView *tempImageView = [[UIImageView alloc]initWithImage:inImage];
tempImageView.userInteractionEnabled = YES;
tempImageView.center = self.vwDesktop.center;
CALayer * l = [tempImageView layer];
[l setBorderWidth:2.0];
[l setBorderColor:[[UIColor grayColor] CGColor]];
tempImageView.frame = CGRectMake(0,0,inImage.size.width,inImage.size.height);
[currentImageArray addObject:tempImageView];
UIPanGestureRecognizer *stampPanGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(moveStamp:)];
[stampPanGesture setMinimumNumberOfTouches:1];
[stampPanGesture setMaximumNumberOfTouches:1];
[[currentImageArray objectAtIndex:currentImageArray.count - 1] addGestureRecognizer:stampPanGesture];
[self.vwDesktop addSubview:[currentImageArray objectAtIndex:currentImageArray.count - 1]];
}
2 ответа
Есть ли причина, по которой вы не добавляете распознаватель жестов в tempImageView перед добавлением его в currentImageArray?
Нам действительно нужно увидеть код в moveStamp. В зависимости от того, как вы это делаете, вам нужно будет опросить распознаватель, спросить его, кто является его представлением, а затем переместить это представление. Ты это делаешь? У меня нет удобного кода, но он выглядит примерно так:
- (void)moveStamp:(UIPanGestureRecognizer*)panRecognizer {
UIView *viewToMove = panRecognizer.view;
// move the view around
}
PanRecognizer будет указывать только на его вид, поэтому он должен работать. Я сделал это со многими объектами на экране (см., Например, мое приложение QPlus), комбинируя жесты панорамирования, пинча и касания, и все они прекрасно играют вместе.
Удачи,
Damien
Может быть, вы можете использовать тег UIImageView для решения вашей проблемы.
- (void)moveStamp:(UIGestureRecognizer *)gesture
{
NSInteger tag = gesture.view.tag;
if (tag = currentViewTag) {
return;
}
//...
}