ホームページ>開発ツール>Xojo / Real Studio Trial and Error・CocoaのDeclareでリッチテキストを扱う・インスペクターバーの制約
Xojo / Real Studio Trial and Error
目次
CocoaのDeclareでリッチテキストを扱う・インスペクターバーの制約
はじめに
以下は、Xojo Cocoaビルドについての話題です。
前回のケースで使用したインスペクターバーは手軽で重宝するものですが、制約があることが発覚したため、まとめておきました。
なお今回の検証にはXojoではなく、 Xcode 7.2.1を用いています。(Mac mini mid 2010 + OS X 10.11.3 El Capitan)
また、追加確認作業のため、OS X 10.7.5 Lion + Xcode 4.4.1を用いています。
状況
インスペクターバーの制約は、「テキストエリアに付加するものだが、ウィンドウの一部として表示される」というものです。
インスペクターバーを付加するテキストエリアが一つで、かつウィンドウ全面(少なくとも上部)を占めるのであれば、特に問題はないと思われます。
が、テキストエリアが複数ある、あるいはタイトルバー(ツールバー)から離れた場所にある、といった場合は、操作が混乱する恐れがあります。
以下の例では、ルーラーを表示しているテキストエリアに、インスペクターバーを付加しているのですが、バーが有効になるのはルーラーを表示しているテキストエリアだけ、というのは直感的には分かりづらいです。(別の領域をクリックした瞬間に、バーがインアクティブになればまだしもですが、そうはなりませんし…)
なら、移せばいいのでは?、と思ってググってみると、以下がヒットしました。
参考サイト(1):objective c - Positioning inspector bar for NSTextView - Stack Overflow
ここでの結論は(意外にも?)、動かせない、というものでした。
とは言え、説明だけではいまひとつ掴みきれない面もあるので、当方でも追試をして確かめることにしました。
実験
追試の結果ですが、参考サイト(1)とは異なっていました。
注)記事の日付が2012.08だったので、(リリース直後の10.8より標準的と思われる)10.7 Lionで同様の実験を行ったところ、"window view"の構成/移設の状況(バーの中身だけが移動して、元々割り当てられていた領域はそのまま残る。)とも、記事の通りとなりました。(いつから?なぜ?変更になったかは未調査です。)10.11.3 El Capitanでの"window view"の構成は、以下の通りでした。(注:サブ階層は必要な箇所のみ調査しています。)
NSTitlebarView直下のNSViewまたはNSTitlebarAccessoryClipViewがインスペクターバーのようです。(注:どちらを動かしても同じ結果になるので、特定できなかった。)+- NSView +- NSTitlebarContainerView +- NSTitlebarView +- _NSThemeCloseWidget +- _NSThemeZoomWidget +- _NSThemeWidget +- NSToolbarView +- NSTextField +- NSView +- NSTitlebarAccessoryClipView
動かしてみると、最初に割り当てられた領域をはみ出した分は、以下のように見えなくなってしまいます。(ここではframeのorigin.yを-15にしている。)
OSのバージョンで微妙に異なるものの、動かそうとすると不都合が生じることに変わりはないため、諦めるしかなさそうです。
おわりに
横方向の移動は、表示上の不都合はなさそうなので、2ペインの右側に合わせ込みたい、といった使い方ならできるかもしれません。
ただし、ウィンドウをリサイズしたりすると、デフォルトの位置に戻ってしまいますので、毎回揃え直す必要があるとか、OSのバージョンで処理を振り分けなければならないとか、相当厄介ではありますが。
お世話になったサイト
貴重な情報をご提供頂いている皆様に、お礼申し上げます。(以下、順不同)
参考サイト(1):objective c - Positioning inspector bar for NSTextView - Stack Overflow
更新履歴
2016.03.19 新規作成
[Home] [MacSoft] [Donation] [History] [Privacy Policy] [Affiliate Policy]