パスワードを忘れた? アカウント作成
656462 journal

nogの日記: Cocoa IRcat:TextFieldのフォーカス

日記 by nog

今日はなにげにチャットの文字を入力するTextFieldのフォーカスまわりをいじってみる事に。IRcatのページにも書いている誰か実装してくれないかなーと思っているものに近いものだろう。
jIRCでも結構苦労した部分であり、jIRCでも完璧にはなっていない。Java(というかSwing?)では大体どういうふうにしたらいいのは解るものの、Objective-C(というかCocoa)では用語からして解らない。

そんな仲検索して引っ掛かったのはMLでの投稿記事で、この部分でフォーカスをどのように取得する方法はNSWindowの - (BOOL)makeFirstResponder:(NSResponder *)aResponderという事が解った。あとはNotificationからfocusを取得するメソッドを呼び出すように設定すればいいんだけど、そのNotificationがいいのが見つからない。
いまのところNSViewFocusDidChangeNotificationとNSWindowDidBecomeKeyNotificationを選び、TextFieldの位置やサイズがかわった場合と、ウインドーが前面になった場合フォーカスを得ている事を確認できている。

実装は二通りあると思う。まずはTextFieldが他のコンポーネント(CocoaでいうとViewになるのかな?)に絶対フォーカスを回さない方法と、他のコンポーネントに細工をしてTextFieldにフォーカスを回す方法があると思う。jIRCの場合は前者である。IRcatの作者さんは後者を望んでいることが前出のサイトで解る。Javaで作られているjIRCではあまり高度な事を要求できない(遅くなるだろうし、僕が作れない)ので割り切って簡単な方を選んだが、IRcatはどうなのかなぁ、、、一応前者でAPIあたりを散々調べまくったつもりだが、それっぽいのはない。
後者の方がいろいろできるだろうが(それこそ文字を入力しようとしたらフォーカスを移すとか)やらなきゃいけない事多そうでやだなぁ。案外簡単にできるものかもしれないが。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...