我在自定义视图中有文本字段NSOutlineView.编辑其中一个单元格需要单击,暂停和另一次单击.第一次单击选择表视图行,第二次单击单击在字段中绘制光标.双击单元格(允许您在基于单元格的表格视图中进行编辑)仅选择该行.
我想要的行为:单击一下即可更改选择并进行编辑.
我需要覆盖什么才能获得此行为?
我读过其他一些帖子:
NSTextField 轻量级的模式似乎并不适用于基于视图的表视图,其中电池的观点都是从笔尖实例化.NSTextField像这个解决方案描述的子类化,但我mouseDown没有调用我的重写方法.被覆盖awakeFromNib和viewWillDraw(在这篇文章中提到)被称为.当然,mouseDown如果我将文本字段放在表视图之外的某处,则会调用它.相比之下,NSSegmentedControl我的单元格视图中的a更改其值而不先选择行.
以下是根据公认的回复改编的工作解决方案:
在大纲视图子类中:
-(void)mouseDown:(NSEvent *)theEvent {
[super mouseDown:theEvent];
// Forward the click to the row's cell view
NSPoint selfPoint = [self convertPoint:theEvent.locationInWindow fromView:nil];
NSInteger row = [self rowAtPoint:selfPoint];
if (row>=0) [(CellViewSubclass *)[self viewAtColumn:0 row:row makeIfNecessary:NO]
mouseDownForTextFields:theEvent];
}
Run Code Online (Sandbox Code Playgroud)
在表格单元格视图子类中:
// Respond to clicks within text fields only, because other clicks …Run Code Online (Sandbox Code Playgroud) 当我点击它时,如何将事件附加到NSTextField?那里有什么例子吗?
在Interface Builder控制点击a时NSTextField,该选项Sent Actions可用.我认为它会在点击我的时候触发一个动作NSTextField(这是不可编辑的),但它不起作用.

有关此选项目标的任何线索吗?
我想在用户点击文本字段时打开一个面板.我想我应该使用一个响应click事件的委托方法.我发现了
- (void)textDidBeginEditing:(NSNotification *)aNotification
Run Code Online (Sandbox Code Playgroud)
方法不起作用,那个
- (void)controlTextDidBeginEditing:(NSNotification *)aNotification
Run Code Online (Sandbox Code Playgroud)
方法有效,但只有当我在文本字段中编辑文本时,才会单击它.如果我再次编辑文本,此方法不起作用.为什么?
对不起,我想我想在mac上使用它,而不是在iphone上,如何使用cocoa?
cocoa ×2
nstextfield ×2
click ×1
cocoa-touch ×1
iphone ×1
macos ×1
mousedown ×1
nstableview ×1
objective-c ×1
uitextfield ×1