我是iPhone開發的新手。任何人都可以告訴我如何解除UIActionSheet控制,當我在它外面輕拍?UIActionSheet關閉時點擊/水龍頭
在我的actionSheet中,我只有datePicker控件,它現在彈出了標籤欄控件,現在當用戶點擊它時,它應該關閉而不是使用actionSheet的取消按鈕。 問候
我是iPhone開發的新手。任何人都可以告訴我如何解除UIActionSheet控制,當我在它外面輕拍?UIActionSheet關閉時點擊/水龍頭
在我的actionSheet中,我只有datePicker控件,它現在彈出了標籤欄控件,現在當用戶點擊它時,它應該關閉而不是使用actionSheet的取消按鈕。 問候
我有你創建一個透明的按鈕,使您的視圖相同的大小,並將它送回的建議。創建一個方法來解除操作表並將其與大按鈕掛鉤。我從來沒有嘗試過,但我認爲這是值得一試的,因爲如果這樣做的話,你可以將它設置爲視圖中的一種通用方法,當用戶敲擊文本框之外(根據HIG)和UIActionSheet時,關閉鍵盤。
但是,我不知道是否適合像popover一樣關閉UIActionSheet。不管行動表是否需要一些輸入?否則,爲什麼蘋果會爲您提供一個取消按鈕?
試試這個神奇:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOut:)];
tap.cancelsTouchesInView = NO;
[actionSheet.window addGestureRecognizer:tap];
[tap release];
而且這種方法:
-(void)tapOut:(UIGestureRecognizer *)gestureRecognizer {
CGPoint p = [gestureRecognizer locationInView:self.actionSheet];
if (p.y < 0) {
[self actionPickerDone:nil];
}
}
添加工具欄與按鈕sismiss日期選擇器和actionSheet
toolbarPicker = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
toolbarPicker.barStyle=UIBarStyleBlackOpaque;
[toolbarPicker sizeToFit];
NSMutableArray *itemsBar = [[NSMutableArray alloc] init];
//calls DoneClicked
UIBarButtonItem *bbitem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(DoneClicked)];
[itemsBar addObject:bbitem];
[toolbarPicker setItems:itemsBar animated:YES];
[menu addSubview:toolbarPicker];
,並添加這些動作的完成按鈕
-(BOOL)closeDatePicker:(id)sender{
[menu dismissWithClickedButtonIndex:0 animated:YES];
[txtDate resignFirstResponder];
return YES;
}
當完成按鈕被點擊//動作 - (IBAction爲)DoneClicked { [自closeDatePicker:自]; menu.frame = CGRectMake(0,44,320,416);
}
按照IOS 6,你可以實現它:
請注意,這只是你實現UIActionSheetDelegate後的作品。
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {
NSLog(@"action sheet was dismissed");
}
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
//if user click outside the action sheet, button index will be -1
if(buttonIndex>0)
{
NSString *buttonTitle = [actionSheet buttonTitleAtIndex:buttonIndex];
}
}
上,如果在操作表單外部單擊,則不會使用按鈕索引-1調用該代理。該文檔提到如果取消按鈕索引未設置,則將傳遞-1的按鈕索引。 – ram
一個更簡單的解決方案就是添加一個取消按鈕。這將自動啓用點擊背景到關閉:(斯威夫特)
alertController.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil))
尼斯提醒提示:D – Vahid
UIActionSheet:UIView。我希望U不能得到Touch控制器OutSide – Srinivas
現在看來這是iOS7的默認行爲。 – JohnK
即使在iOS6中,它也不是iOS 7 iPhone上的默認行爲,只有在iPad – Alex