2016-05-16 140 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

试过这个,但它没有帮助。 –