Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos makeFirstResponder赢得';不编译_Macos_Swift - Fatal编程技术网

Macos makeFirstResponder赢得';不编译

Macos makeFirstResponder赢得';不编译,macos,swift,Macos,Swift,我有一个按钮数组和一个关联的NSTextView数组(嵌入在NSScrollView中),所有这些都是通过编程创建的。所有这些都是在一个程序(日历)中完成的,它可以尽可能地进行编译和工作 但是,我希望单击一个按钮,使关联的文本字段的行为就像我直接在其中单击一样(光标和焦点环出现,它接受文本)。现在,我必须单击按钮和文本框才能开始输入文本 看起来“makeFirstResponder”应该做我想做的事情,但它不会在我试图做的时候编译 以下是相关代码: (全部在单个视图控制器中) 全球宣言: var

我有一个按钮数组和一个关联的NSTextView数组(嵌入在NSScrollView中),所有这些都是通过编程创建的。所有这些都是在一个程序(日历)中完成的,它可以尽可能地进行编译和工作

但是,我希望单击一个按钮,使关联的文本字段的行为就像我直接在其中单击一样(光标和焦点环出现,它接受文本)。现在,我必须单击按钮和文本框才能开始输入文本

看起来“makeFirstResponder”应该做我想做的事情,但它不会在我试图做的时候编译

以下是相关代码:

(全部在单个视图控制器中)

全球宣言:

var arrayOfButtons:[NSButton] = []
var arrayOfFields: [NSTextView!] = []
var arrayOfWindows: [NSScrollView!] = []
创建字段数组:

var i = 0

var myLocalText: NSTextView! = NSTextView(…
    var myLocalWindow: NSScrollView! = NSScrollView(…

        for i = 0; i <= 6; i++ {

            var myLocalText: NSTextView! = NSTextView(…
            var myLocalWindow: NSScrollView! = NSScrollView(…

            view.addSubview(myLocalWindow)

            myLocalWindow.hasVerticalScroller = false
            myLocalWindow.focusRingType = NSFocusRingType(rawValue: UInt(2))!  // I didn’t get a focus ring until I did this
            myLocalWindow.addSubview(myLocalText)
            myLocalWindow.documentView = myLocalText

            myLocalText.editable = true
            myLocalText.selectable = true
            myLocalText.verticallyResizable = true

            self.arrayOfFields.append(myLocalText)

        }

在Mac OS X中,
makeFirstResponder
是一种NSWindow方法,而不是NSView方法。

请尽量避免不必要的介绍性和结束性问题。真的吗?为什么我认为如果我没有提到这一点,其他人会抱怨“信息不足”或“你想做什么?”:-)实际上我可能会这么说。:)谢谢我会调查的,“调查”什么?事情就是这样。除了文档之外,没有什么可以“查看”的,文档可以告诉您这一点,而不会浪费堆栈溢出带宽。好吧,我很高兴您对我的第一个回答微笑:-)试试这个怎么样?我做到了,而且成功了(是的,你知道的)。因此,编译器错误是误导性的——谢天谢地,这种情况从来没有发生过!这是斯威夫特的错误信息如何具有误导性的绝对经典案例。它不是说您根本无法将
makeFirstResponder
发送到NSView,而是告诉您参数列表有问题。如果你有时间,向苹果公司提交一个bug;这种类型的错误消息会造成很多不必要的麻烦,您有一个很好的用例来说明这一事实。
…

view.makeFirstResponder(arrayOfFields[tag])  // THIS IS THE SUBJECT OF MY QUESTION

// IT GIVES A COMPILER ERROR AS FOLLOWS: “Cannot invoke ‘makeFirstResponder’ with an argument list of type ’NSTextView’”
// as far as I can tell from the documentation, makeFirstResponder should accept an argument type of NSResponder, and NSTextView should inherit from that