Деструктивен бутон на UIActionSheet липсва фон

Имам UIActionSheet, към който условно добавям бутони. Ако има много бутони (повече за портретен изглед), деструктивният бутон се отделя от листа с действия (както се очаква), за да позволи на елементите да се превъртат. Това, което не е правилно, е, че няма предистория.

екранна снимка на iOS7

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];

Изглежда добре в портретен режим, разрушителният бутон има фон. Ако обаче добавя много повече бутони, той има същото поведение, както се вижда по-горе.


person Chris    schedule 08.11.2013    source източник
comment
Имате същия проблем. Намерили ли сте някога по-малко хакерско решение? Благодаря.   -  person Anas    schedule 14.01.2014
comment
@anas Не, останах с това решение. Тествахме няколко пъти на множество устройства и различни версии на ОС и въпреки това не сме се натъкнали на проблем. Следващото най-добро нещо ще бъде Apple да разреши грешката, IMO   -  person Chris    schedule 15.01.2014


Отговори (1)


Намерих решение, малко е хакерско. Първо проверявам дали е хоризонтално и дали има повече от 5 бутона. Когато има 6 или повече, това е моментът, в който се променя на превъртащ се лист с действия и тогава възниква проблемът. Ако всичко това е вярно, задавам заглавието на празен низ с интервал

[sheet setTitle: @" "];

Това дава белия фон на бутона, но ни оставя голямо празно бяло пространство отгоре, като се има предвид, че не искате заглавие.

За да поправя това, в 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];
            }
        }
person Chris    schedule 12.11.2013