Matriz de gesto UIImageView
-
13-11-2019 - |
Pergunta
Na minha opinião, há uma variedade de UIImageView.Tentei adicionar um gesto panorâmico, meu UIImageView é capaz de se mover.Mas o problema é que depois de inserir o segundo UIImageView no array, consigo mover o UIImageView quando toco no UIImageView anterior.
Como faço para limitar o toque no UIImageView atual?
- (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]];
}
Solução
Existe um motivo para você não adicionar o reconhecedor de gestos ao tempImageView antes de adicioná-lo ao currentImageArray?
Nós realmente precisamos ver o código no moveStamp.Com base em como você está fazendo isso, você precisará interrogar o reconhecedor, perguntar quem é sua visão e então mover essa visão.Você está fazendo isso?Não tenho código em mãos, mas é algo como:
- (void)moveStamp:(UIPanGestureRecognizer*)panRecognizer {
UIView *viewToMove = panRecognizer.view;
// move the view around
}
O panRecognizer apontará apenas para sua visualização, portanto deve funcionar.Eu fiz isso com muitos objetos na tela (veja meu aplicativo QPlus, por exemplo), combinando gestos de panorâmica, pinça e toque e todos eles funcionam bem juntos.
Boa sorte,
Damião
Outras dicas
Talvez você possa usar a tag do UIImageView para resolver seu problema.
- (void)moveStamp:(UIGestureRecognizer *)gesture
{
NSInteger tag = gesture.view.tag;
if (tag = currentViewTag) {
return;
}
//...
}