2009-02-25 18 views
1

有時候有必要強制結束當前正在進行的任何編輯。例如,如果用戶在我的文檔的字段中輸入值,然後單擊預覽窗口,或者從菜單中選擇「打印」或「保存」。我可以在不中斷焦點的情況下結束對字段編輯器控件的編輯嗎?

問題是,通過強制結束編輯(通過要求NSWindow使自己成爲第一響應者,或通過在窗口上調用endEditingFor:),第一個響應者焦點不再位於該問題的字段中。這在某些情況下會對用戶造成破壞,在這種情況下,所採取的操作是迭代的,並不意味着他們在文檔上的工作結束。

我第一次嘗試解決這個問題的方法是注意當前firstResponder是什麼,然後在使用NSWindow的「makeFirstResponder:」結束編輯後恢復它。這工作正常,但它有不良影響,例如在NSTextFields上將字段編輯器中的選擇重置爲字符串內容的整個長度。

是否有一些技巧可以用來強制整個系統的「endEditing」方法被調用,而不會中斷當前的字段編輯器?

感謝, 丹尼爾

回答

3

爲什麼不使用你原來的方法也記錄下/選擇範圍是什麼樣子,並恢復第一個響應後恢復?

+0

謝謝,也許這是最好的嘗試。我會看看它是如何發展。 – danielpunkass 2009-02-25 22:24:19

0

我同意這是這樣做的。在iPhone上,特別重要的是不要讓鍵盤在不合時宜的地方跳起來。我已經使用:

[textView endEditing:YES]; 
[textView becomeFirstResponder]; 

成功地承擔一個UITextView的內容採取行動之前完成尚未生效的拼寫校正(如同一個空間被擊中),但沒有任何副作用。

相關問題