Я хотел бы сделать UILabel кликабельным.
Я пробовал это, но это не работает:
class DetailViewController: UIViewController {
@IBOutlet weak var tripDetails: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
...
let tap = UITapGestureRecognizer(target: self, action: Selector("tapFunction:"))
tripDetails.addGestureRecognizer(tap)
}
func tapFunction(sender:UITapGestureRecognizer) {
print("tap working")
}
}
ios
swift
uilabel
uitapgesturerecognizer
Даниэль Б
источник
источник
UILabel
? Вы уверены, что трогаете в рамке этикетки? У вас естьUIViews
покрытие на этикетке? Является лиuserInteractionEnabled
установленTrue
на этикетке?Ответы:
Вы попытались установить ,
isUserInteractionEnabled
чтобыtrue
наtripDetails
этикетке? Это должно работать.источник
Swift 3 Обновление
замещать
с участием
Пример:
источник
@objc
.SWIFT 4 Обновление
источник
Swift 3 Обновление
источник
Swift 5
Похоже на @liorco, но нужно заменить @objc на @IBAction .
Это работает на Xcode 10.2.
источник
@IBAction
требуется только для предоставления метода Интерфейсному Разработчику Xcode (следовательно IB). Это также действует так,@objc
но если вы добавляете жесты или другие действия с кодом, вы должны использовать@objc
аннотациюХорошее и удобное решение:
В вашем ViewController:
Вы можете поместить это в свой ViewController или в другой файл .swift (например, CustomView.swift):
В раскадровке выберите «Метка», а в правой части окна «Инспектор удостоверений» в классе поля выберите «LabelButton».
Не забудьте включить в Инспекторе атрибутов метки «Взаимодействие с пользователем включено»
источник
Вы должны включить взаимодействие с пользователем этой метки .....
Например,
yourLabel.userInteractionEnabled = true
источник
Для Swift 3.0 Вы также можете изменить длительность нажатия на жест
источник
Довольно легко не заметить, как я, но не забывайте использовать
UITapGestureRecognizer
вместоUIGestureRecognizer
.источник
Как описано в приведенном выше решении, вы должны сначала включить взаимодействие с пользователем и добавить жест касания.
этот код был протестирован с использованием
Swift4 - Xcode 9.2
источник
Cannot invoke initializer for type 'UITapGestureRecognizer' with an argument list of type '(() -> Void)'
когда я пытаюсь это.