Eu tenho um UIView e adicionei um gesto de toque a ele:
let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
tap.delegate = self
myView.addGesture(tap)
Estou tentando chamá-lo programaticamente no arquivo de teste.
sendActionForEvent
Estou usando esta função, mas não está funcionando:
myView.sendActionForEvent(UIEvents.touchUpDown)
Ele mostra o seletor não reconhecido enviado para a instância.
Como posso resolver este problema?
imageView.userInteractionEnabled = true
se também de ter se estiver usando uma visualização de imagem. Foi pego nisso por muito tempo.Respostas:
Você precisa inicializar
UITapGestureRecognizer
com um destino e uma ação, da seguinte maneira:Em seguida, você deve implementar o manipulador, que será chamado sempre que ocorrer um evento de toque:
Portanto, agora, chamar o manipulador de eventos do reconhecedor de gestos é tão fácil quanto chamar um método:
fonte
tap.delegate = self
não é necessário, já que você já definiu uma meta e uma ação #Para quem procura a solução Swift 3
fonte
isUserInteractionEnabled
é realmente necessário? O padrão é falso?view.isUserInteractionEnabled = true
é a chave quando sua visualização é ImageView ou qualquer subclasse de UIVIew em vez de UIControl.Para o Swift 4 :
No Swift 4, você precisa indicar explicitamente que a função acionada pode ser chamada do Objective-C, portanto, você também deve adicionar @objc à sua função handleTap.
Veja a resposta de @Ali Beadle aqui: Swift 4 adiciona um gesto: substituir vs @objc
fonte
view.isUserInteractionEnabled = true
é a chave quando sua visualização é ImageView ou qualquer subclasse de UIVIew em vez de UIControl.Apenas uma observação - Não se esqueça de ativar a interação na exibição:
fonte
PASSO 1
PASSO 2
ETAPA 3
PASSO 4
RESULTADO
fonte
Implementando gesto de toque
Chama essa função quando a torneira é reconhecida.
Atualização para For Swift 3
fonte
Swift 4
fonte
É assim que funciona no Swift 3:
fonte
Resposta completa para Swift 4
Etapa 1: criar uma saída para a visualização
Etapa 2: definir um gesto de toque
Etapa 3: criar a função ObjC (chamada quando a visualização é tocada)
Etapa 4: adicione o seguinte em viewDidLoad ()
fonte
Swift 5.1 Exemplo para visualização em três
Etapa: 1 -> Adicionar exibição de storyboard e adicionar exibição de saída
Passo: 2 -> Adicionar storyBoard view Tag
Etapa: 3 -> adicionar gesto
Etapa: 4 -> selecionar visualização
fonte
Eu trabalhei no Xcode 6.4 no Swift. Ver abaixo.
fonte
Se você deseja que o código do Objetivo C seja fornecido abaixo,
ou você deseja que o código rápido seja fornecido abaixo,
fonte
Você precisa inicializar o UITapGestureRecognizer com um destino e uma ação, da seguinte maneira:
Em seguida, você deve implementar o manipulador, que será chamado sempre que ocorrer um evento de toque:
fonte
fonte
Swift 4
Primeiro, crie um objeto de UITapGestureRecognizer
O segundo passo é inicializar o UITapGestureReconizer. Habilite a interação do usuário e adicione-a.
Terceiro, crie um método
fonte
tente a seguinte extensão
e depois use:
você pode até usá-lo para celular
fonte
Eu trabalhei no Xcode 7.3.1 no Swift 2.2. Ver abaixo.
fonte
addTapGesture()
no seuviewDidLoad()
Eu queria especificar dois pontos que continuavam me causando problemas.
fonte
xCode 9.3, Swift 4.0
fonte
Inside ViewDidLoad
fonte
Aqui está a maneira mais simples de adicionar gestos no View no Swift 5
fonte
Experimente o seguinte código rápido (testado no Xcode 6.3.1):
Observe que seu destino pode ser qualquer subclasse do UIResponder, consulte (testado no Xcode 6.3.1):
fonte
Em vez de chamar o UITapGestureRecognizer do myView, você pode chamar diretamente a
handleTap
funçãofonte