簡體   English   中英

在Swift for OSX的子類中管理事件處理

[英]Manage event handling in a subclass in Swift for OSX

我正在嘗試實現NSSlider的子類,該子類應該處理修飾鍵事件。 我已經將此重寫函數放在類中:

    override func flagsChanged(theEvent: NSEvent) {
    if (theEvent.modifierFlags.rawValue & NSEventModifierFlags.DeviceIndependentModifierFlagsMask.rawValue) == NSEventModifierFlags.AlternateKeyMask.rawValue {
        optionKeyPressed = true
        Swift.print("OptionKey is pressed")
    } else {
        optionKeyPressed = false
    }
}

還有一個初始化器:

    override init(frame: NSRect) {
        super.init(frame: frame)
    NSEvent.addLocalMonitorForEventsMatchingMask(.FlagsChangedMask) { (theEvent) -> NSEvent? in
        self.flagsChanged(theEvent)
        return theEvent
    }

不幸的是,當我嘗試在情節提要中使用子類時,什么也沒發生:從未調用過init函數。

所有這些事情幾乎都是新手,有一些指導很不錯! 非常感謝,

喬希

您還需要實現initWithCoder:初始化程序,因為在情節提要中使用類時,該初始化程序稱為:

required init?(coder: NSCoder) {
    super.init(coder: coder)
    NSEvent.addLocalMonitorForEventsMatchingMask(.FlagsChangedMask) { (theEvent) -> NSEvent? in
        self.flagsChanged(theEvent)
        return theEvent
    }
}

暫無
暫無

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

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