【发布时间】:2019-02-25 08:17:42
【问题描述】:
我正在创建一个要在视图控制器中显示的 UIView。我创建了 UIView 并显示了,但我现在遇到的问题是:
当我在视图控制器中调用 UIView 时,我无法再与视图控制器的元素进行交互。我创建的
CustomView完全阻止了与我的视图控制器的交互,我希望能够与 UIViewController 进行交互。我想隐藏状态栏,其中包括电池百分比和网络栏和其他内容,以便视图完全覆盖它们。我实现了一个代码来覆盖它们,但它返回一个错误。
下面是我的代码
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)
}
override var prefersStatusBarHidden: Bool {
return true
}
// THIS THROWS an error 'Property does not override any property from its superclass'
}
我的 UIView 在我的 Viewcontroller 中被调用
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.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
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"
}
【问题讨论】:
-
override var prefersStatusBarHidden: Bool { return true }可能应该进入 viewcontroller 而不是 uiview。 -
至于第一点不确定。也许您的自定义视图覆盖了整个 uiviewcontroller 视图,因此捕获了用户触摸
-
正如@iOSer 所说,
prefersStatusBarHidden是 UIViewController 的属性,而不是 UIView 的属性。这是您遇到的唯一问题,还是您实际上在处理 VC 和视图之间的交互时遇到了问题? -
我认为
override var prefersStatusBarHidden: Bool { return true }是一个uiviewcontroller 属性,但第一个问题仍未解决@iOSer @JillevdW -
CustomView类有什么作用? (您正在继承 SliderView)