当我按下arrowButton
时没有得到提示,甚至print("toggleWhiteMenu pressed")
也没有在控制台中打印吗?我已经搜索了其他类似问题,但似乎没有帮助。
let card: UIView = {
let tsl = UIView()
tsl.backgroundColor = UIColor.black
tsl.alpha = 0.9
return tsl
}()
let yellowCard: UIView = {
let tsl = UIView()
tsl.backgroundColor = UIColor.yellow
//tsl.alpha = 1
tsl.isUserInteractionEnabled = false
return tsl
}()
lazy var arrowButton: UIButton = {
let button = UIButton(type: .system)
button.setImage(#imageLiteral(resourceName: "down arrow"), for: .normal)
button.tintColor = UIColor.black
button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 14)
button.addTarget(self, action: #selector(self.toggleWhiteMenu), for: .touchUpInside)
return button
}()
func toggleWhiteMenu() {
print("toggleWhiteMenu pressed")
UIView.animate(withDuration: 1, animations: {
self.whiteMenu.transform = CGAffineTransform(scaleX: 11, y: 11)
}) { (true) in
print("really sick")
}
}
let whiteMenu: UIView = {
let tsl = UIView()
tsl.backgroundColor = UIColor.white
tsl.alpha = 1
tsl.isUserInteractionEnabled = false
return tsl
}()
let containerView: UIView = {
let v = UIView()
v.translatesAutoresizingMaskIntoConstraints = false
v.backgroundColor = .yellow
v.isUserInteractionEnabled = false
return v
}()
let scrollView: UIScrollView = {
let v = UIScrollView()
v.translatesAutoresizingMaskIntoConstraints = false
v.backgroundColor = .white
return v
}()
let backgroundImageView: UIImageView = {
let imageView = UIImageView()
imageView.image = UIImage(named: "eiffel tower")
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.isUserInteractionEnabled = false
imageView.layer.masksToBounds = true
imageView.contentMode = .scaleAspectFill
return imageView
}()
func setUpViews() {
self.view.addSubview(scrollView)
scrollView.addSubview(containerView)
containerView.addSubview(backgroundImageView)
backgroundImageView.addSubview(card)
backgroundImageView.addSubview(yellowCard)
yellowCard.addSubview(whiteMenu)
yellowCard.addSubview(arrowButton)
///i have left out constraints except for the arrowbutton's constraints as i don't deem them necessary for this question
arrowButton.anchor(top: nil, left: nil, bottom: nil, right: nil, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: view.frame.width/6, height: view.frame.width/6)
arrowButton.clipsToBounds = true
arrowButton.centerXAnchor.constraint(equalTo: whiteMenu.centerXAnchor).isActive = true
arrowButton.centerYAnchor.constraint(equalTo: whiteMenu.centerYAnchor).isActive = true
}
答案 0 :(得分:0)
请使用以下选择器方法添加@objc。
@objc func toggleWhiteMenu() {
print("toggleWhiteMenu pressed")
UIView.animate(withDuration: 1, animations: {
self.whiteMenu.transform = CGAffineTransform(scaleX: 11, y: 11)
}) { (true) in
print("really sick")
}
}
答案 1 :(得分:0)
您正在设置:
.isUserInteractionEnabled = false
在多个视图上,然后添加一个按钮作为子视图。在父视图上isUserInteractionEnabled
设置为 false 将会向下层叠到所有子视图, 包括 按钮和其他控件。