Как сделать сенсорный вид за панелью навигации?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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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