2017-09-19 38 views
4

我在導航欄中有一個UIButton,該導航欄位於UIImageUILabel的頂部。它在iOS 10中運行良好,但是現在在iOS 11中,它無法識別我的@IBAction插座上的任何分支。導航欄中的UIButton無法識別iOS中的水龍頭11

navbar button

我試圖移動排渣口至欄按鈕的項目,但也不能工作。該UIButton有以下限制:

enter image description here

我證實,它通過給它一個綠色背景的存在,所以我知道這是明顯的和可用的。

任何想法是怎麼回事?

+0

用的UIBarButtonItem同樣的問題:(試圖找到解決辦法... –

回答

8

我找到了另一位開發人員的解決方案。

您必須在視圖中添加寬度和高度約束,以將所有東西包裝在酒吧按鈕項中。所以在我的情況下,標記爲View的項目需要約束條件。

這裏是做什麼:

步驟1

創建從View@IBOutlet具有此導航欄視圖控制器。

@IBOutlet weak var myView: UIView! 

步驟2

在含視圖控制器,內部viewDidLoad()添加的約束:

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

之後,一切正常像以前的。

+0

是它爲我工作。設置約束被添加到欄按鈕項的所有意見是這樣的技巧 – user36476

+0

這也適用於你在navigationItem的titleView中放置按鈕的類似情況,非常不直觀,但是謝謝! – SomaMan

1

它的瘋狂,但: 在我的情況,我有(在我的情況分辯按鈕)與NavBarItems定製的NavBar和重要:以編程方式添加UITapGestureRecognizer(用於關閉鍵盤上自來水圍繞一個文本框):

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

在iOS 10.3 - 一切都ok ...在11 - 我只有我的「點擊」動作...所以當我解僱TapGestureRecognizer - 行動NavBar開始工作...

所以,如果你有一些手勢在你的屏幕上 - 只要嘗試刪除它...

希望它對您有所幫助

0

添加到Clifton Labrum,這是要走的路。 Apple改變了導航欄在iOS 11中的工作方式。 這也可以在Storyboard中完成,但是通過後代約束。

UIBarButtonItem中的自定義視圖不能直接給出約束。相反,提供其子視圖與約束,自定義視圖將隱含得到它的約束:

UIButton has its constraints

UIButton Constraints

自定義視圖會隱獲得,因爲這些約束的大小。

這應該可以解決所造成的iOS 11.所有怪異的行爲