UIView 中的 UIButton 不响应手势



我有一个UIView,里面有一个UIButton,但按钮无法识别手势

知道为什么吗?我尝试使用与此相关的问题中的解决方案,但没有成功。

全类代码:

import UIKit
import Foundation
public class HUDView: UIView , UIGestureRecognizerDelegate {
    var stopwatch: StopwatchView
    var gamePoints: CounterLabelView
     var hintButton: UIButton!
    required public init(coder aDecoder: NSCoder) {
        fatalError("Never call this... Use init(frame:)")
    }

    override init(frame: CGRect) {
        self.stopwatch = StopwatchView(frame: CGRect(x: ScreenWidth/2 - 150, y: 0, width: 300, height: 100))
        self.stopwatch.setSecondsRemaining(0)
        self.gamePoints = CounterLabelView(font: FontHUD!, frame: CGRect(x: ScreenWidth - 200, y: 30, width: 320, height: 70))
        gamePoints.textColor = UIColor.black
        gamePoints.value = 0
        super.init(frame: frame)
        self.addSubview(gamePoints)
        let pointsLabel = UILabel(frame: CGRect(x: ScreenWidth - 340, y: 30, width: 140, height: 70))
        pointsLabel.backgroundColor = UIColor.clear
        pointsLabel.font = FontHUD
        pointsLabel.text = " Points:"
        self.addSubview(pointsLabel)
        self.isUserInteractionEnabled = false
        self.addSubview(self.stopwatch)
        //load the button image
        let hintButtonImage = UIImage(named: "btn")!
        //the help button
        self.hintButton = UIButton()
      //  hintButton.perform(#selector(HUDView.s))
        hintButton.setTitle("Hint!", for:.normal)
        hintButton.titleLabel?.font = lHud
        hintButton.setBackgroundImage(hintButtonImage, for: .normal)
        hintButton.frame = CGRect(x: 50, y: 30, width: hintButtonImage.size.width, height: hintButtonImage.size.height)
       // hintButton.center = self.center
        //50, 30, hintButtonImage.size.width, hintButtonImage.size.height
        hintButton.alpha = 1.0
        hintButton.isUserInteractionEnabled = true
        self.addSubview(hintButton)
    //    hintButton.addTarget(self, action: #selector(self.tapButton(_:)), for: .touchUpInside)
        let g = UITapGestureRecognizer(target: self, action: #selector(self.h(_:)))
        g.delegate = self
        hintButton.addGestureRecognizer(g)
    }
    func h(_ sender: UITapGestureRecognizer) {
        print("hey!")
        fatalError()
    }
}

问题出在self.isUserInteractionEnabled = false

您正在将按钮作为subview添加到HUDView。按钮点击将不起作用,因为父视图即:HUDView禁用了用户交互,因此将禁用所有subViews的用户交互。在起作用self.isUserInteractionEnabled = true进行更改。

最新更新