頭と尻尾はくれてやる!

iOSアプリなどの開発日記です


macOSでNSViewの下のボタンをクリックできなくしたい

当然、NSViewオブジェクトの下に隠れたボタンはクリックできないだろう、と思っていたんだけどどうもmacOSではできるっぽい。

↑というツイート後に試行錯誤した結果、、、
NSButtonのサブクラスでhitTest(_:)をoverrideして、そこで被せてるviewオブジェクトもクリックしてるようならnilを返す(ボタンは無効)ようにすれば意図通りに動くことを確認した。
    override func hitTest(_ point: NSPoint) -> NSView? {
if let _ = cover.hitTest(point) {
return nil
}
return super.hitTest(point)
}
あらかじめ上に被さるNSViewオブジェクトの参照(↑のコードだとcover)をもらっておく必要がある。

とりあえず機能することはわかったんだけど、サブクラス作るのも参照もらっておくのも面倒だし、イマイチすっきりしないなあ。



macOS 10.15.6 Catalina
Xcode 11.6
Swift 5.2.4
スポンサーサイト




<< CocoaPodsでAdMob SDKを最新のバージョンにする  TopPage  undoするとなぜか一番最初まで戻る(未解決) >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1353-fc9e260d




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.