0

我有一个自定义视图,我正在尝试将其作为页脚添加到我的 TabBarController,这意味着它位于 TabBar 的顶部。我能够显示自定义视图,但是自定义视图上的任何内容都不可点击。就像自定义视图将 isUserInteractionEnabled 设置为 false,但我从 Storyboard 和调试代码中知道该视图及其所有子视图的 isUserInteractionEnabled 设置为 true。我之所以说它的行为类似于 isUserInteractionEnabled 设置为 false,是因为正在点击来自 TabBarController 的根视图控制器的自定义视图下方的按钮,而不是在视图层次结构中位于顶部的自定义视图。在将子视图添加到 TabBarController 之前,我尝试了一些解决方案,例如将 isUserInteractionEnabled 设置为 false。我' 我试图检查子视图是否真的在顶部并且在 TabBarController 的范围内,它是。我现在正处于一个停止点,我非常感谢一些帮助。我唯一可能使它不可点击的线索是我初始化自定义视图的方式

static func nibInstance() -> CustomView {
    let nibView = Bundle.main.loadNibNamed(String(describing:(self)), owner: nil, options: nil)?.first as! CustomView
    return nibView
}

或者我在 TabBarController 中将其初始化为全局变量,然后将其添加到 ViewDidAppear

import UIKit

class CustomTabBarController: UITabBarController {

    let footer = CustomView.nibInstance()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        if !self.footer.isDescendant(of: self.view) {
            self.view.superview!.addSubview(self.footer)
            self.footer.translatesAutoresizingMaskIntoConstraints = false
            self.footer.frame.size.width = self.view.frame.width
            self.footer.leadingAnchor.constraint(equalTo: self.footer.superview!.leadingAnchor, constant: 0)
            NSLayoutConstraint.activate([self.footer.leadingAnchor.constraint(equalTo: self.footer.superview!.leadingAnchor, constant: 0), self.footer.trailingAnchor.constraint(equalTo: self.footer.superview!.trailingAnchor, constant: 0)])
            NSLayoutConstraint.activate([self.footer.bottomAnchor.constraint(equalTo: self.tabBar.topAnchor, constant: 0)])
        }
    }

}

编辑:所以即使我将自定义视图添加到单个视图控制器,自定义视图仍然不可点击。

这是我的项目的 Github 存储库的链接:https ://github.com/ovais-panjwani/TapCustomView我附上了故事板、customView 和 iPhone SE 模拟器屏幕截图的屏幕截图,以便更容易理解。如果您有任何其他问题,请随时与我们联系。 故事板

自定义视图

iPhoneSES截图

4

0 回答 0