用于剪切,复制和粘贴操作的Cocoa协议

时间:2016-10-16 07:34:35

标签: swift macos cocoa swift3

Cocoa中是否有任何协议实现cut的标准操作:copy paste:,就像UIKit的UIResponderStandardEditActions一样?

我想做这样的事情,而不使用新的Swift3 #selector在这个类中实现delete(_ :):

override func supplementalTarget(forAction action: Selector, sender: Any?) -> Any? {

    switch action{
        case #selector(delete(_:)):
             return outlineView.delegate

        default:
            return nextResponder
    }
}

由于

1 个答案:

答案 0 :(得分:0)

您可以定义自己的协议:

@objc protocol MyStandardActionProtocol {
    func cut(_: Any)
    func copy(_: Any)
    func paste(_: Any)
}

并使用#selector之类的:

override func supplementalTarget(forAction action: Selector, sender: Any?) -> Any? {
    switch action{
    case #selector(MyStandardActionProtocol.cut(_:)):
        return ...
    //...
    default:
        return nextResponder
    }
}

Selector实例中不包含类型信息,因此即使没有类符合协议,这也会有效。