2016-05-16 181 views
0

我無法使簡單的工具欄操作正常工作 - 我以前見過這個問題,但答案似乎無效。所有我做過到目前爲止創建一個新的測試項目(在Xcode 7.3),並修改了ViewController類,如下所示:UIBarButton操作不起作用

import UIKit 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     print("viewDidLoad") 

     let tb = UIToolbar() 

     let actionClear = #selector(ViewController.clearAction(_:)) 
     let clearButton = UIBarButtonItem(barButtonSystemItem: .Trash, target: self, action: actionClear) 
     tb.items = [clearButton] 

     self.view.addSubview(tb) 
     tb.translatesAutoresizingMaskIntoConstraints = false 
     NSLayoutConstraint.activateConstraints([ 
      tb.bottomAnchor.constraintEqualToAnchor(self.view.bottomAnchor), 
      tb.centerXAnchor.constraintEqualToAnchor(self.view.centerXAnchor) 
      ]) 
    } 

    func clearAction (sender: AnyObject) { 
     print("clear") 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

代碼編譯W/O錯誤,垃圾桶圖標在底部顯示出來(在iPad上測試),但是當我觸摸圖標時,該操作從未得到執行。

我看到似乎表明,你需要使用一個自定義視圖(UIButton)與UIBarButtonItem一些(舊)的答案,但是這似乎有點瘋狂,因爲UIBarButtonItem的目的是創建一個項目工具欄。我在這裏錯過了什麼?

回答

0

這裏的問題不在於你的barButton由於約束。 添加寬度約束到工具欄:

NSLayoutConstraint.activateConstraints([ 
       tb.bottomAnchor.constraintEqualToAnchor(self.view.bottomAnchor), 
       tb.centerXAnchor.constraintEqualToAnchor(self.view.centerXAnchor), 
       tb.widthAnchor.constraintEqualToConstant(self.view.bounds.width) 
       ]) 
+0

謝謝,沒有的伎倆!我沒有懷疑這些約束有什麼問題,因爲垃圾可能出現在屏幕上,但它不是「活躍」的。我想事情可以看得見,但不是'可觸摸的'? –

-1

刪除發件人:AnyObject在clearAction方法,然後嘗試 與您使用空參數方法選擇方法

func clearAction() { 
     print("clear") 
    } 
+0

試過這個,但它沒有幫助。 –