有时强制结束当前正在进行的任何编辑。例如,如果用户在我的文档的字段中键入值,然后单击预览窗口,或从菜单中选择“打印”或“保存”。
问题是,通过强制结束编辑(通过要求NSWindow使自己成为第一响应者,或通过在窗口上调用endEditingFor:),第一个响应者焦点不再是有问题的字段。在某些情况下,这会对用户造成干扰,其中所采取的操作是迭代的,并不表示他们在文档上的工作已经结束。
我第一次尝试解决这个问题是要注意当前的第一个响应者,然后在结束编辑之后通过使用NSWindow的“makeFirstResponder:”来恢复它。这工作正常,但它具有不希望的效果,例如在NSTextFields上,将字段编辑器中的选择重置为字符串内容的整个长度。
是否有一些技巧可以用来强制调用整个系统的“endEditing”方法而不会破坏当前的字段编辑器?
谢谢, 丹尼尔
答案 0 :(得分:3)
为什么不使用原始方法,还要记录选择范围的位置和内容,并在恢复第一个响应者后恢复它?
答案 1 :(得分:0)
我同意这是做到这一点的方法。在iPhone上,特别重要的是不要让键盘在不合时宜的时刻上下跳动。我用过:
[textView endEditing:YES];
[textView becomeFirstResponder];
在对UITextView的内容采取行动之前成功完成了待处理的拼写更正(就好像有空格一样),但没有任何副作用。