UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTapTap:)];
[self.view1 addGestureRecognizer:tapGesture];
[self.view2 addGestureRecognizer:tapGesture];
[tapGesture release];
No código acima, apenas os toques view2
são reconhecidos. Se eu comentar a terceira linha, os toques view1
são reconhecidos. Se eu estiver certo e você só puder usar um reconhecedor de gestos uma vez, não tenho certeza se isso é um bug ou se precisa de mais documentação.
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didPressed:)]; [self.view1 addGestureRecognizer:tapRecognizer]; [self.view2 addGestureRecognizer:tapRecognizer];
saída view1 não tem variedade gesto reconhecedores; view2 tem variedade gesto reconhecedoresEu consegui contornar isso usando o abaixo.
Então, no meu método handleLongPress, apenas defino um UIButton igual à exibição do reconhecedor de gestos e ramifico o que faço com base nesse botão
fonte
Para Swift 3, no caso de alguém exigir isso: Baseado na resposta de Bhavik Rathod acima.
fonte
getGestureRecognize
porque é isso que esta função fazPodemos fazer algo assim, é fácil e simples
1) crie a função como abaixo em seu controlador (esta função retornará GestureRecognizer)
2) agora defina esse reconhecedor em várias visualizações
fonte
setNumberOfTapsRequired:1
não é necessáriaNão, você não deve anexar reconhecedores de gestos a mais de uma visualização.
Há essas informações explícitas na documentação da Apple:
Guia de manipulação de eventos para iOS - Apple Developer Library
Enquanto outros mencionam que podem funcionar em alguns casos, isso é claramente contrário à documentação e pode mudar em qualquer versão futura do iOS.
O que você pode fazer é adicionar reconhecedores de gestos separados às visualizações que você deseja monitorar e eles podem compartilhar uma ação comum.
fonte
Bem, se alguém não quiser codificar para adicionar exibição de gestos para vários botões, como o kwalker respondeu acima, e quiser fazê-lo através do Interface Builder, isso pode ajudá-lo.
1) Você pode adicionar o reconhecimento de gestos de pressão longa na Biblioteca de objetos, como adicionar outros objetos como UIButtons e UILabels.
Inicialmente o que acabei usando foi que peguei apenas um
2) Defina pontos de referência
UIButton
e ações enviadas com o proprietário do arquivo.fonte
se você tiver uma visão fixa, sugiro que você faça algo assim
dessa forma reduzirá várias variáveis inúteis diferentes
fonte
Você pode criar uma extensão genérica à vista para adicionar reconhecedores de gestos facilmente. Este é apenas um exemplo, mas poderia ser assim
Para adicionar um reconhecedor de 2 toques em uma visualização, basta ligar para:
Você também pode adicionar facilmente um reconhecedor de furto
e assim por diante. Lembre-se de que o destino deve estar vinculado ao seletor.
fonte
Substituir classe por "
<UIScrollViewDelegate>
"E use este método na classe .m:
Este método ajudará você a ativar vários furtos em uma única exibição.
fonte
Que tal reescrever (recriar) seu GestureRecognize sempre que você adicionar um reconhecedor de gestos apontando para a mesma função. No caso abaixo, ele funciona. Eu estou usando IBOutletCollection
Swift 2:
fonte
Você pode fazer isso usando este código, minhas visualizações, que são visualizações de imagens no xib.
fonte
500
a todas as tags de suas visualizações e subtrair500
? Por que não começar suas tags no1
(ou até0
) em vez de501
?1
seu apenas eu copiei esse código do meu aplicativo de onde estou fornecendo501
. Mas sim, não dê0
bcoz. Eu li em algum lugar que sempre indica a visão dos pais, para que isso crie complicações. Acredite, eu já enfrentei isso.