2015-08-28 40 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

相關問題