nstableCellViewの複数のNStextFields;直接編集できるのは最初に編集できます
-
21-12-2019 - |
質問
私のnstableCellViewには複数のNStextFieldsがあります。
ダブルクリックアクションを使用すると、最初のテキストフィールドで編集を有効にする際に機能する[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];
}
.
フルリファレンス:応答ビューベースのテーブルビューのテキストフィールドのマウスイベント
所属していません StackOverflow