Отключение ActionSheet отклонить на ipad, когда пользователь касается внешнего поповера - PullRequest
3 голосов
/ 11 ноября 2011

В моем приложении отображается лист действий, и все это отлично работает на iphone.Тем не менее, на ipad он автоматически создает лист действий внутри всплывающего окна, и я не могу заставить его отключить димминг, когда пользователь прикасается к листу действий.

Я изменил способ отображения листа действий для ipad итеперь показывается с использованием:

        UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Choose a preloaded picture", @"Use a photo", nil];
    actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
    actionSheet.tag = 1;
    [actionSheet showFromRect:CGRectMake(100, 0, 300, 300) inView:self.view animated:YES];
    [actionSheet release];

Я также пытался использовать.

- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
{
     return NO;
}

Есть идеи, как можно предотвратить отключение всплывающего окна uiactionsheet, когда пользователь касается вне таблицы действий?

1 Ответ

1 голос
/ 11 ноября 2011

Ваш метод popoverControllerShouldDismissPopover: не будет вызван, потому что это метод UIPopoverControllerDelegate, и вы имеете дело с UIActionSheet. Поскольку UIKit автоматически создает контроллер popover для вас, у вас не будет возможности установить его делегат. Вы можете получить доступ к самому представлению popover с помощью [popoverActionsheet superview], но это не даст вам UIPopoverController.

С точки зрения пользовательского опыта, Apple будет просить вас не реализовывать такое поведение - если вам нужно представить параметры модальным образом (когда они не исчезают, пока пользователь не сделает выбор), тогда пользователь будет более знаком с UIAlertView, или представленный модально собственный контроллер представления .

...