Eu descobri que posso criar UILabel muito mais rápido do que UITextField e planejo usar UILabel na maioria das vezes para meu aplicativo de exibição de dados.
Para encurtar a história, porém, desejo permitir que o usuário toque em um UILabel e que meu retorno de chamada responda a isso. Isso é possível?
Obrigado.
userInteractionEnabled = true
Respostas:
Você pode adicionar uma
UITapGestureRecognizer
instância ao seu UILabel.Por exemplo:
fonte
Se estiver usando storyboards, você pode fazer todo esse processo no storyboard sem nenhum código adicional. Adicione um rótulo ao storyboard e, em seguida, adicione um gesto de toque ao rótulo. No painel Utilitários, certifique-se de que "Interação do usuário habilitada" esteja marcada para o rótulo. Com o gesto de toque (na parte inferior do controlador de visualização no storyboard), ctrl + clique e arraste para o arquivo ViewController.h e crie uma ação. Em seguida, implemente a ação no arquivo ViewController.m.
fonte
Swift 3.0
Inicialize o gesto para
tempLabel
Receptor de ação
Swift 4.0
Inicialize o gesto para
tempLabel
Receptor de ação
fonte
Swift 2.0:
Estou adicionando uma string nsmutável como texto do sampleLabel, permitindo a interação do usuário, adicionando um gesto de toque e acionar um método.
fonte
Você poderia usar um UIButton em vez disso e definir o texto como você deseja. O botão não precisa se parecer com um botão se você não quiser
fonte
Para adicionar o gesto de toque em UILable
e para avaliar o método seletor
Nota: Adicione UIGestureRecognizerDelegate no arquivo .h
fonte
Versão Swift:
var tapGesture : UITapGestureRecognizer = UITapGestureRecognizer()
Então
viewDidLoad()
, dentro , adicione isto:fonte
Se você quiser usar texto
UILabel
multilinha em seu botão, crie um com texto multilinha e adicione como uma subvisualização em seu botão.por exemplo:
fonte
Swift 3 de Alvin George
fonte
A versão Swift tem esta aparência:
fonte
Eu pessoalmente prefiro o método de escrever uma extensão para UILabel. É isso que eu uso.
Você então o usaria desta forma a partir de qualquer instância UILabel:
Acredito que isso possa causar alguns vazamentos de memória, mas ainda não determinei a melhor forma de resolvê-los.
fonte