Cocoa 查找字段编辑器的NSTextField
我正在使用Cocoa 查找字段编辑器的NSTextField,cocoa,nstextfield,fieldeditor,Cocoa,Nstextfield,Fieldeditor,我正在使用 - (id)windowWillReturnFieldEditor:(NSWindow *)sender toObject:(id)anObject 提供自己的字段编辑器,以便显示自定义上下文菜单。 这是可行的,但在我的字段编辑器的“menuForEvent:”方法中,如何找到它所附加到的NSTextField 编辑:好的,我发现我在文本视图中通过 [[[[self window] firstResponder] nextResponder] nextResponder] 问题
- (id)windowWillReturnFieldEditor:(NSWindow *)sender toObject:(id)anObject
提供自己的字段编辑器,以便显示自定义上下文菜单。
这是可行的,但在我的字段编辑器的“menuForEvent:”方法中,如何找到它所附加到的NSTextField
编辑:好的,我发现我在文本视图中通过
[[[[self window] firstResponder] nextResponder] nextResponder]
问题是——这是一个好的解决方案还是一个黑客。
我必须跳过类的内部响应程序,因此我担心这在将来的Cocoa版本中可能不起作用。我不想依赖响应程序链,因为它看起来相当脆弱
我会尝试向我的field editor类添加一个属性,并将其设置为
窗口中的一个对象WillReturnFieldEditor:toObject:
委托方法。我以前尝试过这个方法,但由于某些未知的原因,它不起作用。顺便说一句,在这个方法中加入printf会让我看不清它被调用了多少次。这是一个很好的方法,请注意文本字段和字段编辑器(文本视图)之间的保留周期。顺便说一下,另一个设置引用的合适位置是在fieldEditor(for:)
中的NSTextFieldCell
的自定义子类中。