UIElements 不会在视图上触发
UIElements does not firing on view highrarchy
我添加了两个自定义视图 classes 并且 class 的元素被添加到 viewcontroller class 但我无法访问第一个元素但我可以访问第二个元素
听我的代码
第一class
class 文本字段:UIView {
override init(frame: CGRect) {
super.init(frame: frame)
let view=UIView(frame : CGRectMake(8,100,270,47))
let headerText=UILabel(frame : CGRectMake(0,0,view.bounds.width,16))
headerText.text="label"
headerText.textColor=UIColor.blackColor()
headerText.textAlignment=NSTextAlignment.Left
headerText.font = UIFont.systemFontOfSize(13.0)
headerText.numberOfLines = 0
view.addSubview(headerText)
let textField=UITextField(frame : CGRectMake(0,20,view.bounds.width,28))
textField.borderStyle=UITextBorderStyle.RoundedRect
textField.userInteractionEnabled=true
textField.keyboardType=UIKeyboardType.NamePhonePad
view.addSubview(textField)
self.addSubview(view)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
第 2 class
协议元素委托{
func buttonClick(sender:UIButton)
}
class 按钮类:UIView {
override init(frame: CGRect) {
super.init(frame: frame)
let button=UIButton(frame: CGRectMake(10,50,270,30))
button.setTitle("Click", forState: UIControlState.Normal)
button.backgroundColor=UIColor.blueColor()
button.userInteractionEnabled=true
button.addTarget(self, action: #selector(button_click(_:)), forControlEvents: UIControlEvents.TouchUpInside)
self.addSubview(button)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func button_click(sender:UIButton){
delegate.buttonClick(sender)
}
}
我的viewcontrollerclass
class ViewController: UIViewController,ElementDelegate {
override func viewDidLoad() {
let screenSize:CGRect=UIScreen.mainScreen().bounds
let date = TextField(frame: CGRectMake(0,10,screenSize.width,screenSize.height))
self.view.addSubview(date)
let element = Button(frame: CGRectMake(0,70,screenSize.width,screenSize.height))
element.delegate = self
self.view.addSubview(element)
}
}
在 运行 下我添加了第一个文本字段视图,然后我添加了按钮视图但是当我单击文本框时我无法访问它但是按钮工作正常当我删除按钮文本框工作正常为什么我不能访问这两个又一个
请帮帮我.....
let date = TextField(frame: CGRectMake(0,10,screenSize.width,screenSize.height))
...
let element = Button(frame: CGRectMake(0,10,screenSize.width,screenSize.height))
您已经创建了两个具有完全相同框架(大小和位置)的子视图。您添加的第二个将在另一个之上,并且将接收触摸事件,即使它们中的按钮和文本字段位于不同的位置 - 普通 UIView
仍将接收触摸事件。
为什么要创建一个视图子类,它只在其中的不同位置包含另一个视图?为什么不直接定位按钮和文本框呢?
我添加了两个自定义视图 classes 并且 class 的元素被添加到 viewcontroller class 但我无法访问第一个元素但我可以访问第二个元素
听我的代码
第一class
class 文本字段:UIView {
override init(frame: CGRect) {
super.init(frame: frame)
let view=UIView(frame : CGRectMake(8,100,270,47))
let headerText=UILabel(frame : CGRectMake(0,0,view.bounds.width,16))
headerText.text="label"
headerText.textColor=UIColor.blackColor()
headerText.textAlignment=NSTextAlignment.Left
headerText.font = UIFont.systemFontOfSize(13.0)
headerText.numberOfLines = 0
view.addSubview(headerText)
let textField=UITextField(frame : CGRectMake(0,20,view.bounds.width,28))
textField.borderStyle=UITextBorderStyle.RoundedRect
textField.userInteractionEnabled=true
textField.keyboardType=UIKeyboardType.NamePhonePad
view.addSubview(textField)
self.addSubview(view)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
第 2 class
协议元素委托{
func buttonClick(sender:UIButton)
}
class 按钮类:UIView {
override init(frame: CGRect) {
super.init(frame: frame)
let button=UIButton(frame: CGRectMake(10,50,270,30))
button.setTitle("Click", forState: UIControlState.Normal)
button.backgroundColor=UIColor.blueColor()
button.userInteractionEnabled=true
button.addTarget(self, action: #selector(button_click(_:)), forControlEvents: UIControlEvents.TouchUpInside)
self.addSubview(button)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func button_click(sender:UIButton){
delegate.buttonClick(sender)
}
}
我的viewcontrollerclass
class ViewController: UIViewController,ElementDelegate {
override func viewDidLoad() {
let screenSize:CGRect=UIScreen.mainScreen().bounds
let date = TextField(frame: CGRectMake(0,10,screenSize.width,screenSize.height))
self.view.addSubview(date)
let element = Button(frame: CGRectMake(0,70,screenSize.width,screenSize.height))
element.delegate = self
self.view.addSubview(element)
}
}
在 运行 下我添加了第一个文本字段视图,然后我添加了按钮视图但是当我单击文本框时我无法访问它但是按钮工作正常当我删除按钮文本框工作正常为什么我不能访问这两个又一个
请帮帮我.....
let date = TextField(frame: CGRectMake(0,10,screenSize.width,screenSize.height))
...
let element = Button(frame: CGRectMake(0,10,screenSize.width,screenSize.height))
您已经创建了两个具有完全相同框架(大小和位置)的子视图。您添加的第二个将在另一个之上,并且将接收触摸事件,即使它们中的按钮和文本字段位于不同的位置 - 普通 UIView
仍将接收触摸事件。
为什么要创建一个视图子类,它只在其中的不同位置包含另一个视图?为什么不直接定位按钮和文本框呢?