不调用Swift协议扩展

时间:2018-02-19 14:05:49

标签: ios swift swift-protocols

我尝试制作协议UIScrollViewDelegate的默认实现,例如:

extension UIScrollViewDelegate {
     func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
         //...
     }
}

但是在子类UITableViewController中(符合UIScrollViewDelegate和)不包含任何实现此方法(无论是在基类还是在子类中),这个扩展提供的实现都胜出了被称为

有没有解决方案为这些方法提供默认实现?

2 个答案:

答案 0 :(得分:2)

只需创建UIScrollView的扩展名即可符合UIScrollViewDelegate协议,如下所示:

extension UIScrollView: UIScrollViewDelegate {
    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        // ...
    }
}

答案 1 :(得分:1)

您正尝试在Objective-C协议上进行Swift协议扩展。这永远不会起作用,因为Objective-C不能看到一个Swift协议扩展,所以Cocoa(它是Objective-C)永远不会知道你的实现,也永远不会调用它。

相关问题