【问题标题】:UIButton inside a UIView not responding to gestureUIView 内的 UIButton 不响应手势
【发布时间】:2017-04-01 16:09:31
【问题描述】:

我有一个 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()
    }

}

【问题讨论】:

  • 为什么不直接使用 addtarget 而不是手势
  • 它也不起作用@Anbu.Karthik
  • 显示创建 HUDView 并将其放入界面的代码。那是有问题的代码。
  • 您确定hintButtonHUDView 的范围内吗?
  • 另外,在按钮上添加点击手势识别器绝对是愚蠢的。但这不是问题的原因。

标签: ios swift uiview uibutton


【解决方案1】:

问题在self.isUserInteractionEnabled = false一行

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    相关资源
    最近更新 更多