2011-03-27 81 views
1

我遇到了MBProgressHUD和DSActivityView,都顯示iPhone應用程序上的黑色圓角「加載」類型疊加層。MBProgressHUD或DSActivityView - 點擊取消

我只是想知道如果有人知道如何擴展其中的任何一個來檢測覆蓋層的點擊,以便該操作可以被取消。

我已經看到至少有一個應用程序有「加載」指標。但隨着文字「點擊取消」。

謝謝!

回答

1

做到這一點的最簡單的方法是添加一個手勢識別器(用於單個抽頭)連接到相關的視圖(在MBProgressHUD的情況下,這可以是類本身,由於MBProgressHUDUIView的子類)。在檢測到輕擊時,您可以觸發解除方法([MBProgress HUD hide])。

您可能還想觸發某種類型的NSNotification,以便您的應用可以繼續使用,因爲除了除去加載視圖本身之外,您還需要取消並清理正在執行的操作在負載期間。

25
- (void)showHUDWithCancel:(NSString *)aMessage { 
    self.HUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
    self.HUD.labelText = aMessage; 
    self.HUD.detailsLabelText = @"Tap to cancel"; 
    [self.HUD addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hudWasCancelled)]]; 
} 

- (void)hudWasCancelled { 
    [self.HUD hide:YES]; 
} 
+1

Doubleplusgood。 – Nestor 2012-12-10 14:20:32

+0

當我點擊取消它拋出一個異常錯誤消息「無法識別的選擇器發送到實例」,雖然我很確定我在目標中正確設置hudWasCancelled – Bruce 2015-07-18 15:19:59

+0

Nvm計算出它是由於hudWasCancelled的缺少(id)發送者參數 – Bruce 2015-07-18 15:43:20