[英]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並覆蓋canBecomeMain
和canBecomeKey
:
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.