2017-09-09 122 views
3

我的swift iOS應用程序有一個顯示鍵盤的活動文本框。 每次用戶點擊鍵盤上的回車鍵,我叫隱藏在鍵盤下的SKStoreReviewController按鈕

SKStoreReviewController.requestReview() 

這聽起來可能有些過度,但一旦用戶給出的審查,所以我覺得我的做法是正確的上述表態不會做任何事情。

問題是,在小屏幕設備(iPhone 5等)上,顯示的SKStoreReviewController的按鈕隱藏在鍵盤下。

因此,用戶會因爲無法關閉SKStoreReviewController而受阻。 我不想爲用戶添加鍵盤隱藏按鈕。

我怎樣才能知道SKStoreReviewController的確顯示,所以我可以通過編程方式隱藏鍵盤?

回答

1

您無法分辨它是否正在顯示。

您可以閱讀SKStoreReviewControllerhere的文檔,該文檔僅顯示用於調用它的requestReview()函數。但是,如果您想深入瞭解一下,我將提供以下屏幕截圖,其中顯示了調試視圖層次結構在顯示請求時的外觀。

enter image description here

這告訴你,是,有沒有什麼可以嘗試嘗試,如果被顯示在屏幕占卦通過諸如presentedViewController性能向下挖。

通常情況下,如果您要展示一個UIAlertController或任何UI元素,那麼您將看到形成它的UI片斷堆疊在一起,表示您可以訪問關聯的屬性以找出正在呈現的內容。有了這門課,沒有提供任何內容,所以你的應用程序不知道發生了什麼。

下面的屏幕截圖顯示視圖層次的樣子,當你在屏幕上有多個元素:

enter image description here

由於蘋果暗指類文檔中,你需要開發自己的邏輯呈現它不會出現您目前遇到的問題。

+0

謝謝你的詳細解答 – Kashif

0

我剛纔已經回答了這個問題在這裏:

Mechanism to detect display of iOS 10.3 app rating dialog?

你可以設置你的文本字段以關閉鍵盤時,評級視圖顯示,當評級觀點駁回再次啓用鍵盤:

- (void)windowDidBecomeVisibleNotification:(NSNotification *)notification 
{ 
    if([notification.object class] == [MonitorObject class]) 
    { 
     NSLog(@"Review Window shown"); 
     [self.enterCodeView resignFirstResponder]; 
    } 
} 

- (void)windowDidBecomeHiddenNotification:(NSNotification *)notification 
{ 
    if([notification.object class] == [MonitorObject class]) 
    { 
     NSLog(@"Review Window hidden!"); 
     [self.enterCodeView becomeFirstResponder]; 
    } 
}