У меня есть пользовательское представление, которое я пытаюсь добавить в качестве нижнего колонтитула в свой 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](https://i.stack.imgur.com/ZPiNA.png)
![CustomView](https://i.stack.imgur.com/iXvMh.png)
![iPhoneSEScreenshot](https://i.stack.imgur.com/dVdTj.png)