「Xamarin.MacでNSTextField内でリターンキーが押された際に処理をする」の版間の差分

ページの作成:「NSTextFieldでリターンキーが押された際に処理をしたいことも多いと思う。 キーボードマウスをいったりきたりするUI...」
 
imported>Administrator
 
(2人の利用者による、間の5版が非表示)
1行目: 1行目:
NSTextFieldで[[リターンキー]]が押された際に処理をしたいことも多いと思う。
NSTextFieldで[[リターンキー]]([[エンターキー]])が押された際に処理をしたいことも多いと思う。[[キーボード]]と[[マウス]]をいったりきたりする[[UI]]とか止めてほしいと思っている人も多いはず。
[[キーボード]]と[[マウス]]をいったりきたりするUIとか止めてほしいと思っている人も多いはず。
ちなみに[[Mac]]では宗教上の理由により、[[キーボード]]のメイン部分にある大きいのが[[リターンキー]]で、[[テンキー]]に付いている小さいのが[[エンターキー]]と区別するらしぞ。


ちなみに[[Mac]]では宗教上の理由により[[キーボード]]のメイン部分にある大きいのが[[リターンキー]]で、[[テンキー]]に付いている小さいのが[[エンターキー]]と区別するらしぞ。
== 実装1 ==
 
==実装1==
リターンキーであれば何も考える必要はない。
リターンキーであれば何も考える必要はない。
リターンキーが押されたり、フォーカスが外れたりすると以下のイベントが順番に発生する。イベント設定はどちらでもいいと思う。
リターンキーが押されたり、フォーカスが外れたりすると以下のイベントが順番に発生する。イベント設定はどちらでもいいと思う。
20行目: 18行目:
</source>
</source>


==実装2==
== 実装2 ==
実装1はフォーカスが外れた際に処理が走ってしまい微妙に不便だったりする。たとえばブラウザの検索窓などでは[[リターンキー]]で検索を実行し、フォーカスがはずれただけの場合は何もしないというものが多い。DoCommandBySelectorを使うとどういう理由で編集を終わろうとしているかを検出できるようだ<ref>https://github.com/xamarin/mac-samples/blob/master/SearchField/SearchFieldWindowController.cs</ref>。
実装1はフォーカスが外れた際に問答無用で処理が走ってしまい微妙に不便だったりする。たとえば[[ウェブブラウザ]]の検索窓などでは[[リターンキー]]で検索を実行し、フォーカスがはずれただけの場合は何もしないというものが多い。これに対応するにはDoCommandBySelectorを使うとどういう理由で編集を終わろうとしているかを検出できるようだ<ref>https://github.com/xamarin/mac-samples/blob/master/SearchField/SearchFieldWindowController.cs</ref>。


<source lang="csharp">
<source lang="csharp">
46行目: 44行目:
</source>
</source>


==関連項目==
== 関連項目 ==
* [[Xamarin.iOS/UIControl派生物にフォーカスを当てる]]
* [[Xamarin.Mac/NSTextFieldクラス]]
* [[Xamarin.Mac/NSTokenFieldクラス]]


==参考文献==
== 参考文献 ==
{{reflist}}
{{reflist}}
{{stub}}


[[category:MonoMac]]
[[category:MonoMac]]
[[category:Xamarin.Mac]]