Ios 从UIButton进行子类化时,使用触摸键继续跟踪不工作

Ios 从UIButton进行子类化时,使用触摸键继续跟踪不工作,ios,iphone,swift,uibutton,swift2,Ios,Iphone,Swift,Uibutton,Swift2,每个人都知道,当你拖动到一个按钮外时,按UIButton的默认设置,它不会立即取消高亮显示状态。UIControlEventTouchDragExit在70像素之外时触发。我希望这个距离是0。因此,在搜索它的解决方案后,我尝试创建一个子类,如下所示: import UIKit class UINewButton: UIButton { override func continueTrackingWithTouch(touch: UITouch, withEvent event: UIE

每个人都知道,当你拖动到一个按钮外时,按UIButton的默认设置,它不会立即取消高亮显示状态。UIControlEventTouchDragExit在70像素之外时触发。我希望这个距离是0。因此,在搜索它的解决方案后,我尝试创建一个子类,如下所示:

import UIKit

class UINewButton: UIButton {
    override func continueTrackingWithTouch(touch: UITouch, withEvent event: UIEvent?) -> Bool {
        print("here")
        let touchOutside = !CGRectContainsPoint(self.bounds, touch.locationInView(self))
        if touchOutside {
            let previousTochInside = CGRectContainsPoint(self.bounds, touch.previousLocationInView(self))
            if previousTochInside {
                print("Sending UIControlEventTouchDragExit")
                self.sendActionsForControlEvents(.TouchDragExit)
                self.highlighted = false
                self.selected = false
            }else{
                print("Sending UIControlEventTouchDragOutside")
                self.sendActionsForControlEvents(.TouchDragOutside)
            }
        }else{
            let previousTouchOutside = !CGRectContainsPoint(self.bounds, touch.previousLocationInView(self))
            if previousTouchOutside{
                print("Sending UIControlEventTouchDragEnter")
                self.sendActionsForControlEvents(.TouchDragEnter)
            }else{
                print("Sending UIControlEventTouchDragInside")
                self.sendActionsForControlEvents(.TouchUpInside)
            }
        }
        return super.continueTrackingWithTouch(touch, withEvent: event)
    }
}
并在UIViewController中创建这样的按钮

@IBOutlet var confirmButton: UINewButton!
我猜想当一个按钮被触摸和拖动时。它将按以下顺序调用函数:

beginTrackingWithTouch(触摸时)->continueTrackingWithTouch(拖动时)->endTrackingWithTouch(向左时)

但奇怪的是。即使我用touch重写了continueTrackingWithTouch函数,它仍然没有被调用。因为控制台窗口没有显示我放在里面的“这里”。并且结果保持默认距离70。怎么会这样

我尝试调用上面提到的三个函数,如果需要,则返回true。 我错过了什么

读完这篇文章后: 仍然没有帮助:((加上用objective-C写的…)

70px的距离不是函数的一个属性,所以我可以改变它吗?(顺便问一下,我怎么能看到原始函数?Apple开发者文档中没有详细信息…) 我应该在UIViewController中使用button.addtarget吗?但这似乎是另一种方法

还有一个问题: 如果我想在拖动到按钮外时取消高亮显示状态,是否正确

self.highlighted = false
self.selected = false
我不知道哪一个是正确的,所以我都用了


请帮助!我只是swift的新手,但我已经陷入这个问题3天了。在swift 3中,QQ

功能签名已更改。现在:

func continueTracking(uuch:UITouch,带有事件:UIEvent?->Bool


在Swift 3中,函数签名已更改。现在:

func continueTracking(uuch:UITouch,带有事件:UIEvent?->Bool


哦!但是我仍然在swift2.3中使用xcode7。所以我认为这不是问题所在。仍然感谢!!哦!但是我仍然在swift2.3中使用xcode7。所以我认为这不是问题所在。仍然感谢!!