UIBarButton操作不起作用
问题描述:
我无法使简单的工具栏操作正常工作 - 我以前见过这个问题,但答案似乎无效。所有我做过到目前为止创建一个新的测试项目(在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
的目的是创建一个项目工具栏。我在这里错过了什么?
答
这里的问题不在于你的barButton由于约束。 添加宽度约束到工具栏:
NSLayoutConstraint.activateConstraints([
tb.bottomAnchor.constraintEqualToAnchor(self.view.bottomAnchor),
tb.centerXAnchor.constraintEqualToAnchor(self.view.centerXAnchor),
tb.widthAnchor.constraintEqualToConstant(self.view.bounds.width)
])
答
删除发件人:AnyObject在clearAction方法,然后尝试 与您使用空参数方法选择方法
func clearAction() {
print("clear")
}
+0
试过这个,但它没有帮助。 –
谢谢,没有的伎俩!我没有怀疑这些约束有什么问题,因为垃圾可能出现在屏幕上,但它不是“活跃”的。我想事情可以看得见,但不是'可触摸的'? –