0

在我的應用程序,我目前的用戶與MFMessageViewController,10秒鐘後,我通過調用MFMessageComposeViewController自動解僱

[self.presentedViewController performSelector:@selector(dismissModalViewControllerAnimated:) 
    withObject:[NSNumber numberWithBool:YES] afterDelay:10]; 

自動關閉它的問題是,如果用戶使用的MFM開始(即通過輸入或點擊加號或編輯正文來添加收件人),我無法取消此呼叫。我知道我可以打電話

[NSObject cancelPreviousPerformRequestsWithTarget:self.presentedViewController 
    selector:@selector(dismissModalViewControllerAnimated:) object:[NSNumber 
    numberWithBool:YES]]; 

但我無法知道用戶何時開始以上述方式編輯MFM。有針對這個的解決方法嗎?

回答

2

我建議你將MFMessageViewController解僱給用戶。用戶已經調用了它,他將成爲最好的裁判。在這種情況下,自動解僱我認爲不安全&可能會在某些情況下惹惱用戶。

它只是不直觀。你爲什麼要在10秒內解僱?隨它去吧。

一切都應該儘可能簡單,而不是簡單 - 愛因斯坦

+0

是的,但在這種情況下,如果用戶沒有注意並且沒有關閉MFM,那麼應用程序其餘部分的有效性會受到影響。我不想留下那樣的事情;當用戶開始與MFM交互時,沒有任何方法可以收到通知嗎? –

+0

你是什麼意思「應用程序的有效性受到影響」?用戶打開mailCompose窗口的原因。讓他決定何時關閉它。在這種情況下,任何其他方式都是反直覺的,只是不正確... –

+0

不,因爲用戶可能不希望MFM第一次出現,並且它需要幾秒鐘才能創建/消息正文被形成。除非MFM被解僱,否則應用程序的真正內容不會發生,這就是我有計時器的原因。我不希望用戶啓動應用程序,然後立即讓自己的設備進入睡眠狀態,期待應用程序正常工作,並在三個小時後回來看到MFM盯着他看,沒有記錄數據。 –

1

正如Srikar已經指出,這可能是一個壞主意,這也不是用戶所期望的。

這就是說,你可以觀察到UIKeyboardWillShowNotification通知。任何與郵件視圖控制器的交互都會顯示鍵盤,所以如果用戶什麼都不做,它就不會顯示出來。當然,不能保證用戶真的輸入了任何東西,但我認爲這是最接近你的。