Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 查找字段编辑器的NSTextField_Cocoa_Nstextfield_Fieldeditor - Fatal编程技术网

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
的自定义子类中。