Пользовательский Subview, добавленный в TabBarController, не может быть изменен - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть пользовательское представление, которое я пытаюсь добавить в качестве нижнего колонтитула в свой TabBarController, то есть располагаться прямо над TabBar.Я могу сделать так, чтобы настраиваемый вид отображался, однако в настраиваемом представлении ничего нельзя изменить.Это похоже на то, что для пользовательского представления isUserInteractionEnabled установлено значение false, но из Storyboard и отладки моего кода я знаю, что для представления и всех его подпредставлений isUserInteractionEnabled установлено значение true.Причина, по которой я говорю, что он действует как isUserInteractionEnabled, имеет значение false, потому что кнопки под настраиваемым представлением из корневых контроллеров представления TabBarController касаются вместо настраиваемого представления, находящегося сверху в иерархии представлений.Я пробовал такие решения, как установка isUserInteractionEnabled в значение false, прежде чем добавить подпредставление в TabBarController.Я попытался проверить, действительно ли подпредставление находится сверху и находится в пределах 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, чтобы их было легче понять.Если у вас есть другие вопросы, не стесняйтесь обращаться.Storyboard

CustomView

iPhoneSEScreenshot

...