我创建了一个 UIView,我想在 View Controller 中显示它。我已经创建了 UIView 并与其他 UI 组件一起显示,但我现在遇到的问题是我无法与 UIView 上的元素进行交互。
下面是我的代码
class SliderView: CustomView {
@IBOutlet weak var containerView: UIView!
@IBOutlet weak var sliderImage: UIImageView!
@IBOutlet weak var sliderText: UILabel!
override func initialize() {
super.initialize()
let name = String(describing: type(of: self))
let nib = UINib(nibName: name, bundle: .main)
nib.instantiate(withOwner: self, options: nil)
self.addSubview(self.containerView)
self.containerView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
self.containerView.topAnchor.constraint(equalTo: self.topAnchor),
self.containerView.leadingAnchor.constraint(equalTo: self.leadingAnchor),
self.containerView.trailingAnchor.constraint(equalTo: self.trailingAnchor),
])
}
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
return sliderImage.frame.contains(point)
}
@IBAction func clickme(_ sender: UIButton) {
print("SWIPPERD minmax22g")
}
}
在 View Controller 中
weak var sliderView: SliderView!
override func loadView() {
super.loadView()
let sliderView = SliderView()
self.view.addSubview(sliderView)
NSLayoutConstraint.activate([
sliderView.topAnchor.constraint(equalTo: self.view.topAnchor),
sliderView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
sliderView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
])
self.sliderView = sliderView
}
override func viewDidLoad() {
super.viewDidLoad()
sliderView.sliderText.text = "HOOOOO WORKS"
}
最佳答案
1-您不应在自定义 View 中再次添加 socket 作为 subview
@IBOutlet weak var containerView: UIView!
self.addSubview(self.containerView)
添加此方法并使用它来获取实例
static func getInstance() -> SliderView {
return Bundle.main.loadNibNamed("SliderView", owner: self, options: nil)![0] as! SliderView
}
2-这将使 imageView 成为 View 内唯一的事件框架
return sliderImage.frame.contains(point)
3-不要在 loadView
中添加 subview ,而是在 viewDidLoad
中添加 subview
let sliderView = SliderView()
至
let sliderView = SliderView.getInstance()
关于ios - 与 View Controller 内的自定义 UIView 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54863700/