I've run into a problem in an iOS app I build originally with Xcode 8.
In my main list view controller I've added a UITapGestureRecognizer to the navigationController's navigationBar to allow me to toggle the scroll position of the view's tableViewController to the end or the beginning of the list. In Xcode 9 betas where I've tested this (versions 1 and 6 I believe), the UIBarbuttonItems in my navigationController do not get touch events and so their actions are never called. I have tested this scenario by not adding the gesture recognizer to make sure that it wasn't just a problem with barButtonItems, and indeed they work just fine if there is no gesture recognizer in the navigationBar. But I would like to maintain this simple user experience, so removing the gesture recognizer or changing the required number of taps is undesirable.
I filed a Radar for this issue when I first encountered it. It was closed as a duplicate but apparently no action has been taken in the intervening weeks.
The best solution I've come up with is to test the touch location in the UIGestureRecognizerDelegate function gestureRecognizer:shouldReceiveTouch:, but it's a bit fragile, relying on some hard-coded values, and it doesn't provide consistent results.
Can anybody suggest a better workaround?