Класс UIActionSheet
имеет свойство visible
.Возвращает YES
, если лист действий показывает, NO
, если это не так.Это должно позволить вам узнать, был ли он отклонен.
Вы также можете реализовать некоторые UIActionSheetDelegate
методы, чтобы узнать, когда он был отклонен или отменен, используя actionSheetCancel:
и / или actionSheet:didDismissWithButtonIndex:
.
РЕДАКТИРОВАТЬ:
Чтобы быть уверенным в получении вызовов делегатов вашего UIActionSheet, обязательно укажите в объявлении интерфейса вашего контроллера (.h):
@interface YourViewController : UIViewController<UIActionSheetDelegate>
@end
Затем в реализации контроллера (.m):
- (void)actionSheetCancel:(UIActionSheet *)actionSheet {
NSLog(@"action sheet is about to be cancelled");
}
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {
NSLog(@"action sheet was dismissed");
}
РЕДАКТИРОВАТЬ 2:
Я только что посмотрел код SHKActionSheet
класс и оказывается, что он не реализует метод actionSheetCancel:
, поэтому вы его не получаете.Однако он реализует метод actionSheet:didDismissWithButtonIndex:
:
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
{
// Sharers
if (buttonIndex >= 0 && buttonIndex < sharers.count)
{
[NSClassFromString([sharers objectAtIndex:buttonIndex]) performSelector:@selector(shareItem:) withObject:item];
}
// More
else if (buttonIndex == sharers.count)
{
SHKShareMenu *shareMenu = [[SHKCustomShareMenu alloc] initWithStyle:UITableViewStyleGrouped];
shareMenu.item = item;
[[SHK currentHelper] showViewController:shareMenu];
[shareMenu release];
}
[super dismissWithClickedButtonIndex:buttonIndex animated:animated];
}
Если вы хотите получать уведомления о методе actionSheetCancel:
, просто добавьте его в файл SHKActionSheet.m:
- (void)actionSheetCancel:(UIActionSheet *)actionSheet {
[super actionSheetCancel:actionSheet];
}
Метод делегата в вашем контроллере будет вызываться правильно:)
Ссылка на класс UIActionSheet
Ссылка на протокол UIActionSheetDelegate