update 2:
since people still looking @ question: know realized it's impossible replicate bug on actual, isolated ios device. when present search controller, ios presents keyboard well, covers tab bar. switch tabs, must dismiss keyboard, dismiss search controller well.
the reason "isolated" because don't know if can replicate bluetooth keyboard , don't have 1 try. ios keyboard might not presented external keyboard connected
update:
i added viewwilldisappear override view 1 , found interesting results:
when searchbar not present, switching tabs dismiss view before loading next view. however, when searchbar present, view not dismissed before loading next view
i have tab bar controller @ root, has 2 tabs. each goes navigation controller takes device view. here's crude diagram:
/-> navigation controller -> view 1 tab bar controller \-> navigation controller -> view 2
this works fine normally. however, view 1 has uisearchcontroller. bug if click search button, search controller presented. if click view 2 in tab bar , switch view 1, search controller still there , view black.
my current hacky "fix" disable tab bar while search bar apparent , re-enable if user selects "cancel". has 2 issues:
- it's jank; user should able switch tabs whenever want
- it re-enables if user hits cancel, not if tap out of search
how can fix this? here pictures of i'm talking about
i solved following answer at: uisearchcontroller causes black screen swift 2.0
i implemented in viewdidload
:
self.definespresentationcontext = true searchcontroller.searchresultsupdater = self searchcontroller.searchbar.delegate = self searchcontroller.dimsbackgroundduringpresentation = false searchcontroller.definespresentationcontext = true
this pretty solved problem me. encountered problem trying segue away @ didselectrowat
, had never been issue. solved first popping uisearchcontroller, performing segue normal:
_ = self.navigationcontroller?.popviewcontroller(animated: true)
Comments
Post a Comment