Я создаю представление фильтра для своего приложения ios, и я не уверен, как скрыть свой контроллер всплывающих окон, когда я нажимаю за его пределы.Я хотел бы использовать RxSwift / реактивный стиль, если это возможно.
![enter image description here](https://i.stack.imgur.com/84r5i.png)
Я немного исследовал это и просто запутался в различных решениях:
- UIGestureRecognizer
- UIPopoverController
- , переопределяющий метод
touchesBegan
Кроме того, я не знал, стоит ли мне скрывать или представлятьконтроллер просмотра.Есть ли польза от представления / отклонения?
Это код, который я использовал для создания своего представления и отображения его при нажатии кнопки:
let filterView = UIView()
func initFilterView() {
let filterNavBar = UINavigationBar()
let filterNavItem = UINavigationItem()
self.view.addSubview(self.filterView)
self.filterView.addSubview(testButton)
self.filterView.addSubview(filterNavBar)
self.filterView.isHidden = true
self.filterView.backgroundColor = .blue
self.filterView.snp.makeConstraints { make in
make.bottom.left.right.equalToSuperview()
make.height.equalTo(300)
}
filterNavBar.snp.makeConstraints { make in
make.height.equalTo(50)
make.top.width.equalToSuperview()
}
let clearButton = UIBarButtonItem()
let doneButton = UIBarButtonItem()
clearButton.title = "Clear"
doneButton.title = "Save"
filterNavItem.leftBarButtonItem = clearButton
filterNavItem.rightBarButtonItem = doneButton
filterNavBar.items = [filterNavItem]
testButton.backgroundColor = .red
testButton.setTitle("test haha haha", for: .normal)
testButton.snp.makeConstraints { make in
make.centerX.centerY.equalToSuperview()
make.height.width.equalTo(100)
}
}
func initNavBar() {
self.navigationItem.titleView = searchBar
filterButton.title = "Filter"
self.navigationItem.rightBarButtonItem = filterButton
}
filterButton.rx.tap.subscribe(onNext: { [unowned self] tap in
self.filterView.isHidden = false
})
Я ожидаю, что код будет скрытвид, но я не уверен, как это сделать.