簡體   English   中英

使用Swift將NSView添加到響應鏈的指南

[英]Guide for adding NSView to responder chain with Swift

我已經閱讀了這份文件。 看到了這個 SO問題(以及其他問題)。 並看了一下教程。 但是對於我的一生,我無法讓自定義情節提要板正常工作。 我正在使用 SO答案中找到的代碼來引入新視圖及其控制器。

基本上,在初始視圖中為用戶顯示5個按鈕,單擊任何一個按鈕都將導致另一個視圖從左側滑入。 一切正常,放置在新視圖上的所有NSButtons都會獲得點擊並執行應有的功能。 但是,文本字段完全不可訪問:您可以選擇其中的任何文本,但不能覆蓋。

我假設我沒有將新的視圖/視圖控制器正確地注入響應者鏈中(但是為什么按鈕可以工作而文本字段卻不能?)。

明智地使用

self.resignFirstResponder()

newViewController.becomeFirstResponder()

始終返回true。 我將它們放置在新視圖的各種初始生命周期函數中,以及動畫結束時的實際自定義NSViewControllerPresentationAnimator中。

如果segue是預設的工作表,模式,彈出框或其他內容,則新視圖會很好地接收所有操作/鍵入。 所以這絕對是我的代碼。

我知道這不是很好的形式,但是我很生氣:有人可以使用Swift一步一步地舉例嗎?

[編輯] 啊! 似乎是因為我的應用程序窗口中的“標題欄”未被選中,所以它拒絕接受第一響應者。 真可惜,我很喜歡沒有標題的干凈窗戶。

就我而言,我希望App窗口沒有標題欄。 如果在情節canBecomeMain窗口的“ IB屬性”部分中未選中“標題欄”選項,則需要子類化NSWindow並覆蓋canBecomeMaincanBecomeKey

import Cocoa

class BTVWindow: NSWindow {

    override var canBecomeKey: Bool{
        get {
            return true
        }
    }

    override var canBecomeMain: Bool{
        get {
            return true
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM