web-dev-qa-db-ja.com

UIBarButtonItemはiOS 11 beta 7ではクリックできませんか?

これについてSOについて別の質問がありますが、これはiOS 11のベータ版と関係があると思うので、これは何の関係もありません。

これらの2つのUIButtonUIView内にグループ化されています。このUIViewはUIBarButtonItem内に配置され、Interface Builderを使用して全体がLeft Bar Button Itemsとして設定されます。

各ボタンをクリックすると、ストーリーボードによってトリガーされるポップオーバーが表示されます。

Xcode 8を使用して、iOS 9を実行するiPad 3でこれをテストしています。これは非常にうまく機能します。

IOS 11ベータ7を実行しているiPad Pro 9.7 "でこれをテストすることにしました。Xcode9ベータ6を使用しています。iPadProでこれを実行すると、ナビゲーションバーのすべてのボタンが無効になります。クリックへの応答:同じXcode 9ベータ6を試して、iOS 9を搭載したiPad 3でアプリを実行すると、すべてがうまく動作します。

IOS 9.1用にコンパイルしています。

IOS 9の場合のように、タップを確認するために強調表示されていないボタンもあります。

IOS 11ベータ7およびバーボタンアイテムに問題はありますか?

何か案は?

14
SpaceDog

問題を発見しました!驚くべきバグ!

これはドリルです。これを行うことで、左側のナビゲーション項目に2つのボタンを追加していました。

  1. ビューを作成する
  2. そのビュー内に2つのUIButtonsを追加します。
  3. そのビューを左側のナビゲーション項目に追加します。

これはiOS 9用にコンパイルされたもので、iOS 11ではなくiOS 10以下のデバイスで動作します。

これを行う「正しい」方法はこれです

  1. UIButtonを左側のナビゲーションアイテムにドラッグします。
  2. 別のUIButtonを左側のナビゲーションアイテムにドラッグします。

IOSはそれを可能にし、「ナビゲーションアイテム」の下の両方のボタンを管理します。

これは、9〜11でテストしたすべてのiOSバージョンで動作します。

4
SpaceDog

XCode 8でビルドされた同じコードがios10-11で正常に動作することがわかりましたが、XCode 9でビルドすると、カスタムビューでUIBarButtonItemがクリックに応答しません。

ios 11からナビゲーションバーがフレームを処理する代わりに自動レイアウトを使用するため、問題が発生するようです。画面上のボタンはよく見えますが、技術的にはオフスクリーンのようです。

したがって、私の修正は、カスタムビューに自動レイアウト制約を追加することです。

//my custom view init
let view = MyCustomView()
view.frame = CGRect(x: 0, y: 0, width: 44, height: 44)
let rightButtonItem = UIBarButtonItem(customView: view)

//constraints
let widthConstraint = view.widthAnchor.constraint(equalToConstant: 44)
let heightConstraint = view.heightAnchor.constraint(equalToConstant: 44)

heightConstraint.isActive = true
widthConstraint.isActive = true

//add my view to nav bar 
self.rightBarButtonItem = rightButtonItem

カスタムの右バーボタンがクリックを正常に受信した後。

15

このメソッドをUIBarButtonItemに追加することで、これが機能するようになりました。

[self.barBTNItem setWidth:44];
3
Josher

タップしましょう:

UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(manualAdd.dismissKeyboard))  
tap.cancelsTouchesInView = false  // this line is required for xcode 9  
view.addGestureRecognizer(tap)  
2
Ahmad

IOS 11にアップグレードするときに同じ問題が発生しました。

ボタンを含むUIViewのサイズは0x0でした。

Interface BuilderでUIViewの高さx幅を修正しましたが、その後動作します。

0
Quan Vu