运行 NSAlert 之后 First Responder 是否被修改?

Is the First Responder modified after running an NSAlert?

有时,当我 运行 我的应用程序时,我发现菜单不起作用,就好像它没有连接一样。

经过调查,似乎 错误出现在应用程序的某个时刻,要求用户在 NSAlert 中输入一些文本。

NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:@"enter your name"];
[alert addButtonWithTitle:@"OK"];
NSTextField *input = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 200, 24)];
[input setStringValue:@""];
[alert setAccessoryView:input];
NSInteger button = [alert runModal];
... // do something with [input stringValue];

这有什么问题吗?我正在使用 ARC。我应该 "dealloc" 使用后 NSAlert 吗?

谢谢

我最终在模态之后手动设置了第一响应者。

[xxx.window makeFirstResponder:yyy.myView];

事情真的很奇怪,我无法将第一响应者设置为调用前的状态,即使它等于 myView...