2013-11-08 5 views
1

У меня есть UIActionSheet, что я условно добавляю кнопки. Если есть много кнопок (более того, для портретного вида), деструктивная кнопка отделяется от листа действий (как и ожидалось), чтобы позволить элементам прокручиваться. Дело в том, что это не так, если у него нет фона.UIActionSheet разрушительная кнопка отсутствует фон

iOS7 screenshot

UIActionSheet *sheet = [[UIActionSheet alloc]initWithTitle:nil 
                delegate:self 
             cancelButtonTitle: nil 
            destructiveButtonTitle:@"Changed my mind" 
             otherButtonTitles:MAILBUTTON, BOOKMARKSBUTTON, CLEARCOOKIESBUTTON, nil]; 


if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
{ 
    [sheet addButtonWithTitle:CAMERABUTTON]; 
} 

sheet.tag = ACTION_SHEET; 

if ([UIPrintInteractionController isPrintingAvailable]) 
{ 
    [sheet addButtonWithTitle:PRINTBUTTON]; 
} 

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
if ([prefs boolForKey:BUMP_ENABLED_KEY] == YES) 
{ 
    [sheet addButtonWithTitle:BUMPRECEIVEBUTTON]; 
    if ([prefs boolForKey:BUMP_ALLOW_SENDING_KEY] == YES) 
     [sheet addButtonWithTitle:BUMPSENDBUTTON]; 
} 

[sheet addButtonWithTitle: @""]; 
[sheet setCancelButtonIndex: sheet.numberOfButtons - 1]; 

[sheet showInView:self.view]; 

Это выглядит хорошо в портретном режиме, кнопка разрушительный имеет фон. Если я добавлю еще много кнопок, это будет иметь такое же поведение, как показано выше.

+0

имеют те же проблемы. Вы когда-нибудь находили менее хакерское решение? Благодарю. – Anas

+1

@ anas Нет, я придерживался этого решения. Мы тестировали несколько устройств и разные версии ОС несколько раз и, однако, не столкнулись с проблемой. Следующее лучшее будет для Apple, чтобы решить ошибку, IMO – Chris

ответ

0

Нашли решение, это немного взломало. Сначала я проверяю, если он ландшафтный и что есть более 5 кнопок. Когда их 6 или более, это когда он изменяется на лист действий прокрутки, и именно тогда возникает проблема. Если все это правда, я дал название в пустую строку с пробелом

[sheet setTitle: @" "]; 

Это дает белый фон для кнопки, но это оставляет нас с большим пустым белым пространством над, учитывая вы не» t хочу заголовок.

Чтобы это исправить, в willPresentActionSheet, я скольжу вниз на фоне

 if (actionSheet.title) 
     { 
      if ([actionSheet.title.trim isEqualToString: @""]) 
      { 
       CGRect backdropFrame = [[[actionSheet subviews] objectAtIndex: 0] frame]; 
       backdropFrame.origin.y += 45; 
       backdropFrame.size.height -= 55; 
       [[[actionSheet subviews] objectAtIndex: 0] setFrame: backdropFrame]; 
      } 
     } 
Смежные вопросы