質問

私のnstableCellViewには複数のNStextFieldsがあります。 Enter Enter Image説明

ダブルクリックアクションを使用すると、最初のテキストフィールドで編集を有効にする際に機能する[self.outlineView editColumn:0 row:clickedRow withEvent:nil select: YES];を呼び出します。また、ユーザーがすべてのフィールドを介してTabキーを押すことができるように、IBのNextKeyViewsをセットアップします。しかし、マウスキーを押すと直接テキストフィールドを選択しようとすると、それが機能することはありません。NstableCellViewで編集を選択/解除するだけで、毎回最初のテキストフィールドを編集します。

正しいフィールドを選択して編集できるようにするには、どのように機能しますか。

役に立ちましたか?

解決

解決策を見つけた:

  • サブクラスNSTABLEVIEW / NSOUTLINEVIEW
  • サブクラスで、- (void) mouseDown:(NSEvent *)theEvent
  • をオーバーライドします。

ムーズタウン:

        NSPoint selfPoint = [self convertPoint:theEvent.locationInWindow fromView:nil];
        NSInteger row = [self rowAtPoint:selfPoint];
        if (row>=0) [(ContactInfoTableCellViewMac *)[self viewAtColumn:0 row:row makeIfNecessary:NO]
                     mouseDownForTextFields:theEvent];
.

ContactInfotableCellViewMac:

- (void) mouseDownForTextFields:(NSEvent *)theEvent {
    if ((NSCommandKeyMask | NSShiftKeyMask) & [theEvent modifierFlags]) return;
    NSPoint selfPoint = [self convertPoint:theEvent.locationInWindow fromView:nil];
    for (NSView *subview in [self subviews])
        if ([subview isKindOfClass:[NSTextField class]])
            if (NSPointInRect(selfPoint, [subview frame]))
                [[self window] makeFirstResponder:subview];
}
.

フルリファレンス:応答ビューベースのテーブルビューのテキストフィールドのマウスイベント

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top