2015-08-28 92 views
1

的应用程序的代码是在这里(该Raiseman文件夹包含项目的文件):基于文档的应用程序:哪个是关键窗口?

https://github.com/bignerdranch/cocoa-programming-for-osx-5e/tree/master/Chapter%2011%20-%20Undo/RaiseMan

每个文件(?窗口)包含NSTableView和两个按钮:

enter image description here

该应用程序使用ArrayController来管理Document类中的一个Employees数组,并且这些按钮从数组中添加或删除Employees。

我注意到,如果我点击添加员工按钮并开始编辑NSTableView中的员工姓名,然后点击返回结束编辑,如果我点击文件>新建创建第二个文档,然后点击添加第二份单据中的员工,然后编辑员工姓名并按回车键,返回键被发送到第一份单据,该单据在第一单据中结束了对该单位名称的编辑,而第二单据中没有任何更改。这是为什么?我期望包含我点击的按钮的窗口成为关键窗口,因此返回键将被发送到第二个窗口。

如果我再次点击Return,则编辑在第二个Document中结束。

+0

你是否用自己的代码开始编辑第一个窗口? –

+0

@ AminNegm-Awad,是的。 Add Employee按钮连接到Document类中的addEmployee(_ :)'动作,并且在动作内部是方法调用'tableView.editColumn(_ :, row :, withEvent :, select:)',其中' tableView'是NSTableView的出口。 – 7stud

回答

0

看起来像一个bug给我。 NSTableRowData对象正在为所有对象(包括其他窗口中的视图)观察NSControlTextDidEndEditingNotification。

+0

当我点击Return时,会不会导致两个NSTableView结束编辑? – 7stud

相关问题