なんか気が向いたんで、まだヤってます。ちなみに冬の当落は今度の金曜日。まぁそれはさておき。
rinsukiさんがApp Extension 式 Screen Saverで紹介されてるswift版を、Objective-Cに書き換えたもので検証してるんですが...。いずれにしても設定のビューに難がありまして。
Apple純正 Hello.appex の設定シートの場合。
こんな感じでヤりたいところなんですが、何故だか"OK"ボタンのある領域が下に追加されちゃうんですよ。
自前の場合。
勝手に追加しないで欲しいなー。って、ナニかをナニすればイケるんでしょうねぇ。ナンだろう???
わかんないから、寝る。
App Extension式のスクリーンセーバって、macOS Mojaveでも動くんですね。その場合は設定のビューがそのまま表示されて即座に反映させるような状態だから、"OK" も "キャンセル" も無いわけだ。なるほど...。でもSonomaでの設定はシートで表示していて、Apple純正スクリーンセーバは "キャンセル" も出来るしなー。ナニか方法があるんだろーなー。非公開なだけあって、さっぱりわからんちん。悔しい。ぐぬぬ...。ひとまずそれはさておき。
この冬も、大晦日に有明へ行くことになりました。どーしよー。
App Extension式のスクリーンセーバを、とりあえずサクっと作ってみようかとおもったんですわ。結論は断念。スクリーンセーバとしては動かせたんですが、問題は設定の『シート』ね。
従来のスクリーンセーバのシートを閉じるにはconfigureSheet
の解説にあるようにendSheet:
を使いました。でも設定は『ビュー』で用意するから、シートが不明なんですよね。試しにendSheet:self.view.window
を唱えても閉じないし。self.view.window.frameのサイズはself.view.frameと同じで、勝手に追加されたOKボタンの領域はどーなっちゃったよ?って感じ。self.view.windowに親/子のウインドウも無さそうだし、隠蔽されてる? おとなしく、勝手追加のOKボタンを利用するしかなさげ。まぁそれはイイんですが...。
『OKボタン』の他にも、Apple純正ならそんなこと無いのになー、とゆー制約がありまして。シートの横幅が470(かな?)までしか表示されないの。最初の表示は問題無いのよ。でも二度目以降、一旦シートを閉じてまた表示させるとシートの左側470までしか表示されない。なんだかなー。まぁこれもタブなんかで項目を分割させればイイんですが...。
そして致命的な点。テキストフィールドにキー入力出来ない!っての。キー入力のイベントは、勝手追加のOKボタンのreturn(enter)キー判定に奪われちゃうのよ。makeKeyWindow
の呪文でフォーカスリングは描画されるものの、ダメ。becomeFirstResponder
を唱えても、ダメ。いえね、ナニかの拍子に入力出来ることも極々稀にあったりするんでよ。でもどーすればイケるんだかサッパリわからんちん。わからんちん...。
てなわけで、App Extension式のスクリーンセーバは保留ってことで。機会があればまた調べ...。ぐぬぬ。