2017-09-19 11 views
4

UIImageUILabelの上にあるナビゲーションバーにUIButtonがあります。 iOS 10ではうまくいきましたが、現在iOS 11では、私の@IBActionアウトレットのタップは認識されません。ナビゲーションバーのUIButtonがiOS 11のタップを認識しない

navbar button

私はバーボタン項目にタップのコンセントを移動しようとしたが、それはどちらか動作しませんでした。 UIButtonは、次の制約があります。

enter image description here

私はそれはそれを緑の背景を与えることがあることを確認したので、私はそれが見えると利用できることを知っています。

何が起こっているのでしょうか?

+0

UIBarButtonItemと同じ問題に起因するすべての奇妙な行動:(解決策を見つけるしてみてくださいを修正する必要があります... –

答えて

8

他の開発者の解決策が見つかりました。

バーのボタンアイテム内にすべてのアイテムをラップするビューに幅と高さの制約を追加する必要があります。だから私の場合、Viewというラベルの付いた項目には制約が必要です。

はここで何をするかです:

ステップ1

このナビゲーションバーを持つビューコントローラにViewから@IBOutletを作成します。 viewDidLoad()内部に含むビューコントローラで2

@IBOutlet weak var myView: UIView! 

ステップは、制約を追加:

myView.widthAnchor.constraint(equalToConstant: 63).isActive = true 
myView.heightAnchor.constraint(equalToConstant: 33).isActive = true 

をその後、それがために使用のようにすべての作品。

+0

はい、それはボタンの項目をバーに追加されているすべてのビューの制約を設定します。私のために働きましたこれのための秘訣です – user36476

+0

これは、navigationItemのtitleViewにボタンを置いたのと同様の状況でも機能します。非常に直感的ではありがたくありがとう! – SomaMan

1

それはクレイジーだけど:私の状況で 私はNavBarItemsとカスタムナビゲーションバー(私の場合はrigthボタン)を持っていると重要:プログラムで(のためのテキストフィールドの周りのタップでキーボードを閉じ)UITapGestureRecognizerを追加しました:

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard)) 
view.addGestureRecognizer(tap) 

iOS 10.3 - すべてが正常です... 11 - 私は "タップ"アクションしか持っていません。TapGestureRecognizerを無効にすると、NavBarのアクションが起動します。

あなたの画面に - それを削除してみてください...

あなたのお役に立てば幸いです

0

クリフトンラブラムに加えて、これは道のりです。 AppleはiOS 11でのナビゲーションバーの動作方法を変更しました。 これはストーリーボードでも実行できますが、子孫の制約があります。

UIBarButtonItem内のカスタムビューに直接制約を与えることはできません。代わりに、制約をサブビューを提供し、カスタムビューは、暗黙的にその制約を取得します:

UIButton has its constraints

UIButton Constraints

カスタムビューは、暗黙のうちにあるため、これらの制約により、そのサイズを取得します。

これはiOSの11

関連する問題