I have a UIButton
in a navigation bar that sits over the top of a UIImage
and a UILabel
. It worked fine in iOS 10, but now in iOS 11 it doesn't recognize any taps from my @IBAction
outlet.
I tried moving the tap outlet to the bar button item, but that didn't work either. The UIButton
has the following constraints:
I confirmed that it's there by giving it a green background, so I know it's visible and available.
Any idea what's going on?
Adding to Clifton Labrum, this is the way to go. Apple changed the way navigation bars work in iOS 11. This can also be done in Storyboard but through descendant constraints.
The Custom view inside UIBarButtonItem can NOT be given constraints directly. Instead, provide its subviews with constraints, and the Custom view will get its constraints implicitly:
The custom view will implicitly get its size because of those constraints.
This should fix all the weird behavior caused by iOS 11.
it's crazy but: in my situation i have custom NavBar with NavBarItems (rigth button in my case) and IMPORTANT: programmatically added UITapGestureRecognizer(for dismiss keyboard on tap around a textfield):
on iOS 10.3 - all be ok... on 11 - i have only my "tap" action... so when i dismiss TapGestureRecognizer - actions on NavBar start working...
so, if you have some gestures on you screen - just try remove it...
hope it's help for you
I found a solution from another developer.
You have to add width and height constraints to the view that wraps all your stuff inside the bar button item. So in my case, the item labeled
View
needs the constraints.Here's what to do:
Step 1
Create an
@IBOutlet
fromView
to the view controller that has this nav bar.Step 2
In the containing view controller, inside
viewDidLoad()
add the constraints:After that, everything works like it used to.