如何在使用uiactionsheet時忽略外部例如上方的內容?這是iPhone的。顯然,ipad默認是這樣做的(我可能是錯的)。如何使用uiactionsheet解僱,當你輕敲外面,例如上面?
回答
好的有一個解決方案。以下適用於的UIActionSheet
// For detecting taps outside of the alert view
-(void)tapOut:(UIGestureRecognizer *)gestureRecognizer {
CGPoint p = [gestureRecognizer locationInView:self];
if (p.y < 0) { // They tapped outside
[self dismissWithClickedButtonIndex:0 animated:YES];
}
}
-(void) showFromTabBar:(UITabBar *)view {
[super showFromTabBar:view];
// Capture taps outside the bounds of this alert view
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOut:)];
tap.cancelsTouchesInView = NO; // So that legit taps on the table bubble up to the tableview
[self.superview addGestureRecognizer:tap];
[tap release];
}
它的要點是添加一個手勢識別器的動作片的上海華,並測試所有水龍頭,看看他們是動作片上的子類。
它可能對你有用 用途:
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
這可以解除它,但我仍然需要一些方法來捕獲'外部觸發'事件發生時,所以我可以調用這個函數。 – Chris 2011-05-30 04:33:37
http://developer.apple.com/library/ios/#documentation/uikit/reference/UITapGestureRecognizer_Class/Reference/Reference.html – Aravindhan 2011-05-30 04:44:59
我正在嘗試使用水龍頭手勢識別器,但我無法找到要附加的視圖它來。動作表的視圖?它的超級觀點?在'showfromtabbar'中傳遞給它的tabbar? *它的*超級觀點?他們都沒有工作... – Chris 2011-05-30 05:12:52
我認爲你正在尋找這種方法
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
編輯
可以使用這個在你的動作表對象上,它工作得很好,但你不能在該表之外註冊事件,如灰色部分
可能是你的視圖控制器上使用的UITapGestureRecognizer
比它可能的伎倆。
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(nothing)];
[actionSheet addGestureRecognizer:recognizer];
這不回答這個問題準確,但這裏是我做的項目之一(從增加額外這樣可以防止「完成」按鈕或「外部點擊」的東西),當點擊關閉選擇器:
落實在其中創建一個UILabel的viewForRow
選擇器的委託方法並返回它:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
在這些自定義行標籤,添加自來水動作處理程序:
UITapGestureRecognizer *tapAction = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleClick:)];
[label addGestureRecognizer:tapAction];
在回調,關閉該開放片(包含該選擇器視圖的一個):
[pickerSheet dismissWithClickedButtonIndex:0 animated:TRUE];
使用showFromRect,例如:
UIView *barButtonView = [barButtonItem valueForKey:@"view"];
CGRect buttonRect = barButtonView.frame;
[actionSheet showFromRect:buttonRect inView:self.view animated:YES];
我在gestureRecognizerShouldBegin
添加dismissWithClickedButtonIndex
味精,它的工作原理。
將UIActionSheet的cancelButtonIndex屬性設置爲有效值後,輕敲外部將關閉UIActionSheet。我已經在iOS 9中嘗試過了。但是,如果此cancelButtonIndex未設置爲錯誤值(例如,一個超過UIActionSheet中按鈕總數的指數),在外部點擊時不會發生任何事情。
不需要任何點擊手勢。只需使用UIAlertActionStyleCancel操作即可。
使用。取消 UIAlertActionStyle作爲選項。
- 1. 解僱UIActionSheet當應用程序在雲上的背景iOS4的
- 2. UIActionSheet發佈後解僱
- 3. Android:FacebookOperationCanceledException當在對話框外輕敲
- 4. 如何檢測使用RubyMotion輕敲UISlider?
- 5. 模糊TextInput當輕拍在它外面
- 6. 當用戶輕敲對話框外時如何隱藏軟鍵盤
- 7. Modal uiactionsheet ipad不能被解僱
- 8. 如何創建一個平面UIActionSheet
- 9. 如何解僱PopupWindow whem點擊外部?
- 10. 你如何使用Seam頁面參數?
- 11. 你如何從應用程序委託中解除UIActionSheet?
- 12. 如何解僱我當前視圖
- 13. 你如何在外面的路線上觸發事件?
- 14. 解除當前UIActionSheet
- 15. 如何訪問當前[網頁]頁面(當前頁面之外)?
- 16. 如何在AVAudioEngine中輕敲AVAudioNodeTapBlock。
- 17. 如何播放iPhone輕敲聲音?
- 18. 如何解僱AlertViewController
- 19. 如何解僱FBWebDialogs?
- 20. 解僱對話框當外界
- 21. 如何解決的例外通知錯誤,並以書面
- 22. 使用css減輕面積
- 23. 如何檢查烤麪包是否已解僱
- 24. 輕敲的UIBarButtonItem
- 25. 如何自動解除UIActionSheet
- 26. 如何解決使用hadoop的下面的用例?
- 27. 如何識別使用手勢識別器輕敲哪個UIImageView?
- 28. 如何在Stackpanel的空白派對中使用輕敲事件?
- 29. 輕掃上的面漆側面菜單
- 30. 你如何刮AJAX頁面?
我目前正在嘗試這種解決方案,但是我發現UIAlertView吸收所有事件,所以tapOut:方法永遠不會被手勢識別器調用。因此,這個解決方案根本不起作用。 – StCredZero 2012-08-27 21:05:27
我得到了與@StCredZero相同的結果。在8.1中,如果您使用的是UIAlertController,那麼添加一個UIAlertActionStyleCancel會給你帶來這種效果。在以前的版本中,無法添加此功能。 – 2014-11-13 17:13:28