首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在NSResponder 2.2中更新选择器

如何在NSResponder 2.2中更新选择器
EN

Stack Overflow用户
提问于 2016-09-04 11:49:11
回答 1查看 161关注 0票数 2

我正在实现一个NSControlTextEditingDelegate协议,我不知道应该与哪个类/协议相匹配,例如commandSelector。#selector(WhichClass.moveUp(_:)),以便传递等式。

目前,所有事情都很好,使用的是迅速2.1:

代码语言:javascript
复制
func control(control: NSControl, textView: NSTextView, doCommandBySelector commandSelector: Selector) -> Bool {

    var goUp = false
    var goDown = false

        if (commandSelector == Selector("moveUp:") ||
        commandSelector == Selector("moveBackward:") ||
        commandSelector == Selector("moveUpAndModifySelection:") ||
        commandSelector == Selector("moveParagraphBackwardAndModifySelection:")
            )

        {
            goUp = true
        }
        if (commandSelector == Selector("moveDown:") ||
        commandSelector == Selector("moveForward:") ||
        commandSelector == Selector("moveDownAndModifySelection:") ||
        commandSelector == Selector("moveParagraphForwardAndModifySelection:")
            ) {
            goDown = true

        }
//...
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-04 12:07:33

试试这个:

代码语言:javascript
复制
if (commandSelector == #selector(NSResponder.moveUp) ||

如果您愿意,可以按以下方式编写它:

代码语言:javascript
复制
if (commandSelector == #selector(NSResponder.moveUp(_:)) ||

实际上,从Selector生成的#selector实例不包含类信息。因此,您只需要找到定义相同方法的任何类都具有相同的签名。

如果找不到任何类,则可以在自己的协议中定义类并使用协议名。

代码语言:javascript
复制
@objc protocol MyProtocol {
    func moveUp(_:AnyObject)
    //...
}

并在#selector中使用

代码语言:javascript
复制
if (commandSelector == #selector(MyProtocol.moveUp(_:)) ||

后者应该是最后一条路,但实际上是可行的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39316601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档