2017-08-24 50 views
8

關於被如此這個另外一個問題,但是這有什麼關係呢,因爲我覺得這跟iOS的11UIBarButtonItem無法在iOS 11 beta 7上點擊?

我有這2和UIButton S中的一個UIView內部分組的測試版做。這個UIView被放在一個UIBarButtonItem裏面,整個事情被設置爲Left Bar Button Items,使用Interface Builder。

每個按鈕在被點擊時顯示一個由故事板觸發的彈出窗口。

我在使用Xcode 8運行iOS 9的iPad 3上測試此功能。這非常有效。

現在我決定在我的iPad Pro 9.7上運行iOS 11 beta 7進行測試。我正在使用Xcode 9 beta 6.當我在iPad Pro上運行此功能時,導航欄上的所有按鈕都已停止他們不響應點擊。現在,我嘗試同樣的Xcode 9測試版6和iPad 3的與iOS 9運行應用程序,並再次,所有美妙的工作。

我編譯爲iOS 9.1。

按鈕甚至不會突出顯示以確認輕按,就像他們在iOS 9上一樣。

iOS 11 beta 7和酒吧按鈕項目是否存在問題?

任何想法?

+0

我有一個類似的問題,並發現,如果我刷一下按鈕,它發出的動作,很奇怪的行爲。 –

+0

看到我的答案。我發現問題 – SpaceDog

回答

4

我發現了這個問題!驚人的錯誤!

這是演習。我添加兩個按鈕左側的導航項目通過這樣做:

  1. 創建一個視圖
  2. 添加兩個UIButtons該視圖中。
  3. 將該視圖添加到左側導航項。

這被編譯爲iOS 9和設備上可在iOS 10以下,但沒有iOS的11

這樣做的「正確」的方法是這樣的

  1. 拖動UIButton到左側的導航項。
  2. 將另一個UIButton拖動到左側導航項。

你會看到iOS允許這種情況發生,並將管理「導航項目」下的兩個按鈕。

這將對我從9測試的所有iOS版本一起使用直通11

10

我發現,同樣的代碼在Xcode建造8個作品以及上ios10-11,但是當我建立和Xcode 9的UIBarButtonItem定製查看不響應點擊。

看起來問題出現,因爲從ios 11導航欄使用autolayout而不是處理幀。屏幕上的按鈕看起來不錯,但在技術上看起來他們在屏幕外。

所以我的修補程序是添加自動佈局約束到我的自定義視圖。

//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 

之後,自定義右鍵欄按鈕接收點擊成功。

+2

非常好!謝謝!這是Apple永遠不會修復的錯誤之一。這是我未來留給人們的一個信息,那就是處理這個錯誤。 – SpaceDog

+0

@SpaceDog我續訂了這個消息,解決方案仍然有效,錯誤仍然存​​在 – JuicyFruit

2

讓水龍頭:

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

沒有解決我的問題。 – Harsh

+0

它也不能修復我的。 –

0

我升級到iOS的11

時有同樣的問題包含按鈕的UIView的大小是爲0x0。

我修復了界面生成器上的UIView的高度x寬度,它在那之後起作用。

2

我加入這個方法給的UIBarButtonItem得到這個工作:

[self.barBTNItem setWidth:44]; 
+0

它是有道理的。謝謝。 – SpaceDog