2014-03-13 32 views
3

当用户正在编辑桌面视图上的文本字段并决定点击窗口的关闭按钮时,他/她所做的更改不会被保存。我如何强制tableview(基于视图)结束编辑(不中止编辑)?在NSTableView上进行结束编辑(基于视图)

+0

当我在故事板中使用故事板并在我的项目中嵌入模态表单时,我无法为答案工作。我最终将我的'viewController'作为表格单元视图内'NSTextField'的委托。然后当单元格视图的文本字段触发'control(_control:NSControl,textShouldBeginEditing fieldEditor:NSText) - > Bool'和'control(_control:NSControl,textShouldEndEditing fieldEditor)时,我切换了工作表'OK'按钮的'isEnabled'标志:NSText) - > Bool'。这并不漂亮,但它强制用户结束编辑单元格的文本,然后确认它们的输入。 – Todd

回答

1

最简单的方法是为您的窗口分配一个委托并响应NSWindow-windowShouldClose:委托方法。其中,调用-makeFirstResponder:使窗口本身成为第一响应者,注意它给出的BOOL答案。您应该返回任何-makeFirstResponder:答案作为代表...ShouldClose:消息的答案,因为它可能无法结束编辑/退出第一响应者。假设成功,它将结束编辑并触发您在实际关闭之前设置的任何操作/绑定机器。这是可行的,因为NSTableView和它在基于视图模式下使用的视图是NSControl的子类,并通过结束编辑等自动处理响应者状态更改等。希望这有助于。

相关问题