UIButton 的 Swift addTarget 在 UIView 中不起作用
Swift4 addTarget at UIButton doesnt work in UIView
我以编程方式创建了一个 UIButton 并将其添加到子视图。 AddTarget 在那里不起作用。 AddTarget 只有在我将按钮添加到主视图时才有效。
self.view.addSubview(button)
而不是
ViewSystem.addSubview(button)
没有人知道为什么吗?
完整代码如下:
class ViewController: UIViewController {
var ViewSystem = UIView()
@objc func TestPressed(sender: UIButton?) {Test.text=String((sender?.tag)!)
func ButtonCreate () {
let button = UIButton()
button.frame = CGRect(x: 50, y: 100, width: 70, height: 70)
button.addTarget(self, action: #selector(TestPressed), for: .touchUpInside)
button.backgroundColor = UIColor.red
button.tag=5
ViewSystem.addSubview(button)
self.view.addSubview(ViewSystem)
}
}
您必须为您的 ViewSystem 提供框架。并且 ViewSystem 的高度宽度应大于按钮的 X 和 Y。
var ViewSystem = UIView()
ViewSystem.frame = CGRect(x: 50, y: 100, width: 70, height: 70)
@objc func TestPressed(sender: UIButton?) {Test.text=String((sender?.tag)!)
func ButtonCreate () {
let button = UIButton()
button.frame = CGRect(x: 0, y: 0, width: 70, height: 70)
button.addTarget(self, action: #selector(TestPressed), for: .touchUpInside)
button.backgroundColor = UIColor.red
button.tag=5
ViewSystem.addSubview(button)
self.view.addSubview(ViewSystem)
}
}
发生这种情况是因为您设置了按钮框架,然后查看了您的视图,这就是为什么您的按钮未被点按的原因。
您没有设置视图框架,也没有设置视图内的按钮。
我在这里更新你的 ButtonCreate () 函数代码,它运行良好。
func ButtonCreate () {
ViewSystem.frame = CGRect(x: 50, y: 100, width: 200, height: 70)
ViewSystem.backgroundColor = .blue
let button = UIButton()
button.frame = CGRect(x: 0, y: 0, width: 70, height: 70)
button.addTarget(self, action: #selector(TestPressed), for: .touchUpInside)
button.backgroundColor = UIColor.red
button.tag = 5
ViewSystem.clipsToBounds = false
ViewSystem.addSubview(button)
self.view.addSubview(ViewSystem)
}
希望对您有所帮助,节省您的时间
我以编程方式创建了一个 UIButton 并将其添加到子视图。 AddTarget 在那里不起作用。 AddTarget 只有在我将按钮添加到主视图时才有效。
self.view.addSubview(button)
而不是
ViewSystem.addSubview(button)
没有人知道为什么吗?
完整代码如下:
class ViewController: UIViewController {
var ViewSystem = UIView()
@objc func TestPressed(sender: UIButton?) {Test.text=String((sender?.tag)!)
func ButtonCreate () {
let button = UIButton()
button.frame = CGRect(x: 50, y: 100, width: 70, height: 70)
button.addTarget(self, action: #selector(TestPressed), for: .touchUpInside)
button.backgroundColor = UIColor.red
button.tag=5
ViewSystem.addSubview(button)
self.view.addSubview(ViewSystem)
}
}
您必须为您的 ViewSystem 提供框架。并且 ViewSystem 的高度宽度应大于按钮的 X 和 Y。
var ViewSystem = UIView()
ViewSystem.frame = CGRect(x: 50, y: 100, width: 70, height: 70)
@objc func TestPressed(sender: UIButton?) {Test.text=String((sender?.tag)!)
func ButtonCreate () {
let button = UIButton()
button.frame = CGRect(x: 0, y: 0, width: 70, height: 70)
button.addTarget(self, action: #selector(TestPressed), for: .touchUpInside)
button.backgroundColor = UIColor.red
button.tag=5
ViewSystem.addSubview(button)
self.view.addSubview(ViewSystem)
}
}
发生这种情况是因为您设置了按钮框架,然后查看了您的视图,这就是为什么您的按钮未被点按的原因。
您没有设置视图框架,也没有设置视图内的按钮。
我在这里更新你的 ButtonCreate () 函数代码,它运行良好。
func ButtonCreate () {
ViewSystem.frame = CGRect(x: 50, y: 100, width: 200, height: 70)
ViewSystem.backgroundColor = .blue
let button = UIButton()
button.frame = CGRect(x: 0, y: 0, width: 70, height: 70)
button.addTarget(self, action: #selector(TestPressed), for: .touchUpInside)
button.backgroundColor = UIColor.red
button.tag = 5
ViewSystem.clipsToBounds = false
ViewSystem.addSubview(button)
self.view.addSubview(ViewSystem)
}
希望对您有所帮助,节省您的时间