2012-08-22 153 views
0

在我的應用程序中,當我發送請求發送到服務器並收到響應時,我顯示加載屏幕,我正在刪除該加載屏幕。加載屏幕無法正常工作

要顯示加載屏幕我用UIView並降低其阿爾法0.5,以便它顯示了背景圖。

我的問題是當加載屏幕仍然可見時,用戶可以單擊背景視圖上顯示的按鈕。

我想要的是:當加載屏幕可見時,用戶不應該能夠點擊屏幕上的任何位置。即使我做了userInteractionEnabledUIView但仍然用戶能夠點擊按鈕,爲什麼?

如果有人知道我在做什麼錯了,我該如何做到這一點,請告訴我。

在此先感謝!

+0

你試過SVProgressHUD嗎?對於加載屏幕下方的視圖,即包含按鈕的視圖,userInteractionEnabled應爲NO。 – Bourne

+0

不,我沒有嘗試過SVProgressHUD,它已經實現了這種方式,我想要顯示加載屏幕,即使一些內部處理正在進行。 –

+0

我認爲你的視圖層次結構存在問題。因爲通常如果在視圖上設置了userinteractionenabled:no,則視圖子視圖的按鈕不應該是可點擊的。也許再次檢查你如何設置你的uibutton到背景視圖 – NDY

回答

1

UIView可能禁用了交互功能,但如果按鈕在視圖層次上較高,那麼它在視圖的頂部,因此它仍然可以訪問。

如果這是在視圖堆棧的頂部在筆尖製作,那麼要確保它的景色

或者其編程,然後在函數的末尾將其添加爲一個子視圖或將其添加主窗口(是非常小心添加到主窗口的東西,這是層次結構的頂部)

+0

我添加了主視圖上的按鈕,即[self.view addSubView:myButton],然後當用戶點擊按鈕時,我在主視圖中添加加載視圖爲[self.view addSubView:myLoadingView]; –

0

像明智的實用程序開源庫可用。

iOS的開源項目是MBProgressHUD,

它指的是平視顯示器,正在另一視圖重疊的圖,典型地,以顯示活動指示器和/或提供與UI交互的裝置。使用內置電影播放器​​播放電影時,HUD的一個很好的例子就是。當您點擊屏幕時,電影播放器​​將在顯示屏上顯示一系列控件。另一個常見的例子,與MBProgressHUD相關的例子是在現有視圖之上顯示進度指示器。例如,訪問遠程服務時,爲了向用戶提供反饋,您可以選擇顯示「請稍候」消息

您可以下載source code from here

0

是的我知道了,我爲UIView做了userInteractionEnabled false,因此點擊事件發送到了主視圖中的按鈕。我刪除了userInteractionEnabled false並且工作正常。

0

您可以使用[[UIApplication的sharedApplication] beginIgnoringInteractionEvents]當你發送請求到服務器&顯示加載view.When你接收到響應呼叫[UIApplication的sharedApplication] endIgnoringInteractionEvents] &刪除加載視圖。