作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
let aButton = UIButton()
a.addTarget(self, action: "handler:", forControlEvents: .TouchUpInside)
func handler(btn: UIButton) {
//Is there anyway can I know the controlEvent is "TouchUpInside" in this method?
}
如上例,我想知道@selector 的ControlEventType,找不到正确的API 或者不可能?
最佳答案
您可以为不同的控件事件提供不同的方法:
a.addTarget(self, action: "touchDownHandler:", forControlEvents: .TouchDown)
a.addTarget(self, action: "touchUpHandler:", forControlEvents: .TouchUpInside)
func touchDownHandler(btn: UIButton) {
}
func touchUpHandler(btn: UIButton) {
}
如 another answer 中所述您还可以在处理程序中获取事件并检查触摸类型,这里是 Swift 中的:
a.addTarget(self, action: "handleTouch:event:", forControlEvents: .AllTouchEvents)
// ...
func handleTouch(button: UIButton, event: UIEvent) {
if let touch = event.touchesForView(button)?.first as? UITouch {
switch touch.phase {
case .Began:
println("touch began")
case .Ended:
println("touch ended")
case .Moved:
println("touch moved")
case .Cancelled:
println("touch cancelled")
case .Stationary:
println("touch stationary")
}
}
}
关于iOS 在@selector 处获取 UIButton 当前的 UIControlEventType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31405771/
let aButton = UIButton() a.addTarget(self, action: "handler:", forControlEvents: .TouchUpInside) fun
我是一名优秀的程序员,十分优秀!