Swift返回错误"方法' beginTrackingWithTouch(_:withEvent :)'使用Objective-C选择器' beginTrackingWithTouch:withEvent:'冲突"

时间:2015-10-30 06:47:58

标签: ios objective-c xcode swift

从XCode 6.2升级到XCode 7.0.1后,我收到此错误消息。

  

/Users/ZERO/Documents/Xcode/XXXXX/Library/SegmentedControl/SegmentedControl.swift:124:10:   方法' beginTrackingWithTouch(:withEvent :)'与Objective-C   selector' beginTrackingWithTouch:withEvent:'与方法冲突   ' beginTrackingWithTouch(:withEvent:方法)'来自超级' UIControl'   使用相同的Objective-C选择器

我的代码:

func beginTrackingWithTouch(touch: UITouch, withEvent event: UIEvent) -> Bool {

    let location = touch.locationInView(self)

    var calculatedIndex : Int?
    for (index, item) in labels.enumerate() {
        if item.frame.contains(location) {
            calculatedIndex = index
        }
    }


    if calculatedIndex != nil {
        selectedIndex = calculatedIndex!
        sendActionsForControlEvents(.ValueChanged)
    }

    return false
}

1 个答案:

答案 0 :(得分:2)

它具有几乎相同签名的方法在UIContol中定义。

beginTrackingWithTouch(touch: UITouch, withEvent event: UIEvent?)

区别在于event参数是可选的。

所以编译器无法区分它们。 。

如果您要覆盖beginTrackingWithTouch()方法,可以将事件parameter的类型更改为UIEvent?,并添加override注释,如下所示:< / p>

override func beginTrackingWithTouch(touch: UITouch, withEvent event: UIEvent?) -> Bool {
    ...

    return false
}