我有一个奇怪的错误,按钮touchUpInside
不能正常工作。我有两个使用相同代码的按钮
@IBOutlet weak var previousIBO: UIButton!
@IBOutlet weak var nextIBO: UIButton!
@IBAction func buttonDown(sender: AnyObject) {
nextSingleFire()
timer = Timer.scheduledTimer(timeInterval: 0.2, target: self, selector:#selector(nextFire), userInfo: nil, repeats: true)
}
@IBAction func buttonUp(sender: AnyObject) {
timer.invalidate()
}
nextIBO.addTarget(self, action:#selector(buttonDown(sender:)), for: .touchDown)
nextIBO.addTarget(self, action:#selector(buttonUp(sender:)), for: [.touchUpInside, .touchUpOutside, .touchDragOutside])
previousIBO.addTarget(self, action:#selector(buttonDown(sender:)), for: .touchDown)
previousIBO.addTarget(self, action:#selector(buttonUp(sender:)), for: [.touchUpInside, .touchUpOutside])
但是previous
按钮仅在点击后拖动时才有效。而不是只通过点击工作的next
按钮。为什么我在这个按钮中得到这种奇怪的行为?
我想将.touchDragOutside
添加到我之前的按钮,但我不能,因为按钮不起作用
答案 0 :(得分:0)
如果我是你,我首先要删除功能上的@IBAction 据我所知,它们没用,因为你通过“addTarget”设置了动作。您的奇怪行为可能是由于按钮和功能之间的错误连接造成的(选择按钮,然后打开“连接检查器”以检查一切是否正常)。
另一种可能性是您的按钮重叠,或者某些视图阻挡了您的按钮。
此外,定时器可能很棘手,请查看此帖子以启动和停止它们:swift invalidate timer doesn't work