NSTextField
のビューを持っていNSCollectionViewItem
ます。
をクリックするNSCollectionViewItem
と、項目が選択されます。
をクリックするNSTextField
とフォーカスが得られますがNSCollectionViewItem
、テキスト フィールドの後ろにある は選択されません。
この最後の動作を変更して、テキスト フィールドがフォーカスされ、ビュー アイテムも選択されるようにします。
これを行う最善の方法は何ですか?
NSTextField
のビューを持っていNSCollectionViewItem
ます。
をクリックするNSCollectionViewItem
と、項目が選択されます。
をクリックするNSTextField
とフォーカスが得られますがNSCollectionViewItem
、テキスト フィールドの後ろにある は選択されません。
この最後の動作を変更して、テキスト フィールドがフォーカスされ、ビュー アイテムも選択されるようにします。
これを行う最善の方法は何ですか?
イベントを nextResponder (コレクション ビューに設定する必要があります) に渡すには、NSTextField をサブクラス化し、mouseDown をオーバーライドする必要があると思います。
NSTextField を含む NSCollectionViewItem もあります。Finder のアイコンのテキスト ラベルの基本的なルック アンド フィールを再現しようとしています。まだ完成していませんが、これまでのところ、この質問に答えているようです。
重要なのは、テキスト フィールドを選択不可として開始することです。テキスト フィールドでのマウス クリックは、テキスト フィールドによって無視され、コレクション ビュー アイテムが選択されます。次に、コレクション ビュー アイテムの setSelection メソッドで、選択されているときに、テキスト フィールドを編集可能に設定します。テキスト フィールドを次にマウスでクリックすると、フォーカスが移ります。次に、コレクション ビュー アイテムが選択解除されているときに、テキスト フィールドを選択不可に戻し、コレクション ビュー アイテムが再び選択されるのを待ちます。
-(void)awakeFromNib
{
[self.textField setSelectable:NO];
}
-(void)setSelected:(BOOL)selected
{
[super setSelected:selected];
if (self.selected)
{
[self.textField setEditable:YES];
}
else
{
[self.textField setSelectable:NO];
}
}
これは上記の質問に答えますが、明らかに、完全なソリューションにはさらに多くのことが必要です。