0

NSTextFieldのビューを持っていNSCollectionViewItemます。

をクリックするNSCollectionViewItemと、項目が選択されます。

をクリックするNSTextFieldとフォーカスが得られますがNSCollectionViewItem、テキスト フィールドの後ろにある は選択されません。

この最後の動作を変更して、テキスト フィールドがフォーカスされ、ビュー アイテムも選択されるようにします。

これを行う最善の方法は何ですか?

4

2 に答える 2

1

イベントを nextResponder (コレクション ビューに設定する必要があります) に渡すには、NSTextField をサブクラス化し、mouseDown をオーバーライドする必要があると思います。

于 2012-02-24T19:22:06.557 に答える
0

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];
    }
}

これは上記の質問に答えますが、明らかに、完全なソリューションにはさらに多くのことが必要です。

于 2013-03-20T04:02:32.660 に答える