[英]UILabel tap gesture not working when clicked
我已經創建了一個標簽,試圖將其切換到另一頁,但是在設置該標簽之前,必須先使標簽可點擊。 我嘗試了許多在這里提到的不同方法,但是似乎無法使其正常工作。 我的代碼設置方式是在與UICollectionView關聯的外部類中創建標簽,此類與ViewDidLoad()
函數所在的swift文件不在同一文件中。
這是在自己的類內的類文件中創建標簽,該類與ViewDidLoad()
所在的文件ViewDidLoad()
。標簽所在的類在ViewDidLoad()
函數中被調用,因此標簽並且其所有屬性仍在顯示。
標簽創建
@IBOutlet weak var moreLabel: UILabel! = {
let label = UILabel()
label.text = "See More..."
label.font = UIFont.italicSystemFont(ofSize: 16)
label.textColor = UIColor.lightGray
label.translatesAutoresizingMaskIntoConstraints = false
label.textAlignment = .right
label.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(tapMore))
return label
}()
點擊功能
@objc func tapMore(sender: UITapGestureRecognizer){
print ("You tapped more")
}
您尚未將手勢識別器添加到標簽中...
編輯
即使您尚未將識別器添加到標簽上(如matt
所指出的那樣),這也將無法正常工作,因為self
在這種情況下不存在。
我更習慣使用這種格式:
//@IBOutlet weak var moreLabel: UILabel! = {
lazy var moreLabel: UILabel = {
let label = UILabel()
label.text = "See More..."
label.font = UIFont.italicSystemFont(ofSize: 16)
label.textColor = UIColor.lightGray
label.translatesAutoresizingMaskIntoConstraints = false
label.textAlignment = .right
label.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(tapMore))
// add it to the label
label.addGestureRecognizer(tap)
return label
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(moreLabel)
NSLayoutConstraint.activate([
moreLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
moreLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor),
])
}
@objc func tapMore() -> Void {
print("Tapped")
}
您不能在屬性聲明初始化程序中說出target: self
。 還沒有self
。 將所有代碼移到viewDidLoad
。
label.frame = CGRect(x:0,y:0,寬度:100,高度:24)
label.addGestureRecognizer(點擊)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.