为什么按下时带有customView作为UIButton的UIBarButtonItem闪烁两次?我怎么阻止这个?

时间:2016-03-25 18:37:02

标签: ios cocoa-touch uiview uibutton uibarbuttonitem

我尝试使用UIButton作为UIBarButtonItem来获得一些额外的灵活性,这些灵活性在这里并不是很明显,但是必要。

我有以下代码:

let addButton = UIButton(type: .System)
addButton.addTarget(self, action: #selector(boop1(_:)), forControlEvents: .TouchUpInside)
addButton.titleLabel!.numberOfLines = 1

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = .Center

let addAttributedString = NSMutableAttributedString(string: "Add")
let attributes: [String: AnyObject] = [NSFontAttributeName: UIFont.boldSystemFontOfSize(17.0), NSForegroundColorAttributeName: view.tintColor, NSParagraphStyleAttributeName: paragraphStyle]
addAttributedString.addAttributes(attributes, range: NSRange(location: 0, length: addAttributedString.length))

addButton.setAttributedTitle(addAttributedString, forState: .Normal)
addButton.sizeToFit()

let barButtonItem = UIBarButtonItem(customView: addButton)
barButtonItem.target = self
barButtonItem.action = #selector(boop2(_:))

navigationItem.rightBarButtonItem = barButtonItem

但是当你按下时,它会像轻敲一样闪烁,然后如果你松开,它会再次闪烁。图形非常奇特。

如何阻止此事?

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为您为UIBarButtonItem添加了两个不同的选择器。

首先是:

addButton.addTarget(self, action: #selector(boop1(_:)), forControlEvents: .TouchUpInside)

第二个在这里:

barButtonItem.action = #selector(boop2(_:))

我不确定你为什么这样做,但我确定在UIBarButtonItem添加任意1个选择器都可以解决问题。