Как сделать сенсорный вид за панелью навигации?IOS

Программируем под IOS
Anonymous
Как сделать сенсорный вид за панелью навигации?

Сообщение Anonymous »

Я использую этот код для создания панели навигации с настраиваемыми кнопками:

Код: Выделить всё

override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.backgroundColor = .clear
navigationItem.setHidesBackButton(true, animated: false)

rightButtonsImagesArrayNormal = ["gear","unmute"]
rightButtonsImagesArraySelected = ["gear","mute"]

navigationController?.navigationBar.addSubview(rightStackView)
setupNavigationBarButtonConstraint()
setupRightButtons()
}

func setupNavigationBarButtonConstraint() {
rightStackView.topAnchor.constraint(equalTo: (navigationController?.navigationBar.topAnchor)!, constant: 8.0).isActive = true
rightStackView.bottomAnchor.constraint(equalTo: (navigationController?.navigationBar.bottomAnchor)!, constant: -8.0).isActive = true
rightStackView.trailingAnchor.constraint(equalTo: (navigationController?.navigationBar.trailingAnchor)!, constant: -SafeArea().right()).isActive = true
}

func setupRightButtons() {
var configuration = UIButton.Configuration.plain()
configuration.baseBackgroundColor = UIColor.clear
barButton = UIButton(configuration: configuration, primaryAction: nil)
let handler: UIButton.ConfigurationUpdateHandler = { button in
switch button.state {
case .normal: button.configuration?.image = UIImage(named: self.rightButtonsImagesArrayNormal[index-1])
case .selected: button.configuration?.image = UIImage(named: self.rightButtonsImagesArraySelected[index-1])
default: break
}
}
barButton.configurationUpdateHandler = handler
barButton.tag = index
barButton.widthAnchor.constraint(equalToConstant: CGFloat(navigationBarButtonHeight)).isActive = true
barButton.heightAnchor.constraint(equalToConstant: CGFloat(navigationBarButtonHeight)).isActive = true
barButton.addTarget(self, action: #selector(self.rightBarButtonAction), for: .touchUpInside)
rightStackView.addArrangedSubview(barButton)
rightStackView.widthAnchor.constraint(equalToConstant: CGFloat(((navigationBarButtonHeight+16)*rightButtonsImagesArrayNormal.count) - 16)).isActive = true
}
Я использую:

Код: Выделить всё

navigationController?.navigationBar.isUserInteractionEnabled = false
чтобы сделать вид позади панели навигации сенсорным, но в этом случае моя barButton внутри rightStackView становится неприкосновенной, и я не могу использовать barButton. Я делаю так:

Код: Выделить всё

barButton.isUserInteractionEnabled = true
rightStackView.isUserInteractionEnabled = true
но это не решает проблему. Как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/793 ... gation-bar

Вернуться в «IOS»