makeFirstResponder和becomeFirstResponder有什么区别?

Bob*_*ley 1 macos nstableview

我花了很多时间试图找出如何在删除行之后将焦点保持在NSTableView列中,而不是仅仅保留选择.我是这样做的:

[[myTableView window]makeFirstResponder:myTableView];
Run Code Online (Sandbox Code Playgroud)

为什么上面的代码有效,但下面的代码却没有?

[myTableView becomeFirstResponder];
Run Code Online (Sandbox Code Playgroud)

Ken*_*ses 5

-makeFirstResponder:是对窗口的请求,它使指定的响应者成为其第一响应者.-becomeFirstResponder通知响应者它将成为第一个响应者.它本身并不会引起国家变化; 它使接收者有机会对由此引起的状态变化作出反应-makeFirstResponder:.

你不应该打电话-becomeFirstResponder(除非可能super在覆盖中打电话).框架在必要时调用它.