簡體   English   中英

單擊時UILabel點按手勢不起作用

[英]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

  • 設置標簽的框架屬性,因為在UILabel()之后,框架被設置為(0.0,0.0,0.0,0.0)

label.frame = CGRect(x:0,y:0,寬度:100,高度:24)

  • 將手勢識別器分配給標簽

label.addGestureRecognizer(點擊)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM