iOS按钮无法在自定义视图中使用

时间:2017-03-22 03:51:20

标签: ios swift uiview uibutton

有两个自定义视图 - viewA和viewB.ViewB是viewA中添加的一个小视图。在第一个视图A填充整个屏幕。 ViewB位于viewA的底部(屏幕外)。单击viewA中的按钮时,viewB底部常量约束将为-100,因此viewB将显示在屏幕底部。但是viewB中有一个按钮没有响应它的选择器。这是我的代码:

在ViewA中

let viewB: ViewB = {
    let view = ViewB(
    view.setup()
    return view
}()

viewB约束:

    viewB.snp.makeConstraints { (make) in
        make.trailing.leading.equalTo(self)
        make.height.equalTo(100)
        make.top.equalTo(self.snp.bottom)
    }

单击按钮以唤醒viewB

            UIView.animate(withDuration: 0.5) {
            self.snp.updateConstraints({ (make) in
                make.bottom.equalTo(-100)
            })
        }
        self.layoutIfNeeded()

在viewB中:

class ViewB: UIView {

let b: UIButton = {
    let button = UIButton(type: UIButtonType.custom)
    button.addTarget(self, action: #selector(btnClicked), for: UIControlEvents.touchUpInside)
    button.backgroundColor = UIColor.green
    button.setTitle("Button", for: .normal)
    return button
}()


func btnClicked() {
   print("btnClicked")
}

func setup() {
    addSubview(b)
    b.snp.makeConstraints { (make) in
        make.leading.top.bottom.equalTo(self)
        make.width.equalTo(100)
    }

}
}

View Debugger

2 个答案:

答案 0 :(得分:1)

您的代码本身运行正常。所以问题可能就是按钮被另一个采取触摸操作的视图覆盖。您可以使用视图调试器对其进行测试,或者提供项目链接,以便我们中的任何一个人可以查看正在进行的操作。

答案 1 :(得分:0)

我认为,你的视图已超出其超级视图或任何其他视图即将出现在其上层。请看这个

superview.clipsToBounds :  YES