0
在我Xamarin窗體應用程序我有一個Entry
視圖用於輸入文本的頁面。我已經連接好了TextChanged
事件,以便在用戶輸入文本的UI動態更新,我想更新UI堅持,如果用戶按下Enter鍵(即Completed
事件被觸發),但恢復是怎麼回事之前,如果用戶退出視圖(即Unfocused
事件被觸發,但不是Completed
事件)。如何檢測用戶退出文本輸入而不按輸入Xamarin Forms?
的這裏複雜之處在於 - 至少在Android上 - Xamarin首先觸發Unfocused
事件(在這兩種情況下)和然後的Completed
事件(僅在用戶按輸入的情況下)。所以很難確切地知道何時恢復UI更改。這對我來說是違反直覺的:當我按下Enter鍵時,視圖顯然仍然有焦點,所以在Completed
之前先調用Unfocused
沒有任何意義。
有些事情我已經試過,我不快樂:
- 裏面的
Unfocused
事件處理程序,啓動一個定時器爲200ms,如果Completed
事件還沒有被再發生以爲它不會並恢復用戶界面(似乎不可靠,200毫秒是完全武斷的)。 - 總是在
Unfocused
事件中恢復UI,然後在接收到事件(如醜陋,導致UI閃爍,性能不佳)時重新應用Completed
事件中的更改。 - 上述的一些組合,e.g:如果之後所接收
Completed
啓動一個定時器,然後200毫秒後的恢復UI的變化,但重新應用它們,或者如果它在此之前(變得有點複雜)接收取消計時器。
什麼是做到這一點的正確方法?
[A類似的問題](https://forums.xamarin.com/discussion/87705/switching-focus-is-broken-in-entry-completed-event-handler)。但我不認爲它有一個妥善的解決辦法 – Curiousity
[該解決方案(https://stackoverflow.com/a/41521517/7196681),[這](https://forums.xamarin.com/discussion/55183/ done-button-not-firing-completed-event-on-entry)和[this](https://stackoverflow.com/a/39582265/7196681)可能會有所幫助 – Curiousity