Не може да се покаже модален ViewController в iOS7

Опитах се да покажа системно дефинирани изгледи (MFMailComposeViewController, TWTweetComposeViewController и т.н.) като модален изглед.

Но тези контролери за изглед не се появяват в iOS 7 (те работят в iOS5, iOS6).

Viewcontrollers, създадени от мен, се появяват в iOS7 (ex.HogeViewController).

Не звъня на presentViewController:animated:completion на viewDidLoad или viewWillAppear.

Някой има ли идея?

Регистри на конзолата:

init Error Domain=NSCocoaErrorDomain Code=4097 "Операцията не може да бъде завършена. (Грешка на Cocoa 4097.)"

or

_serviceViewControllerReady:error: Error Domain=NSCocoaErrorDomain Code=4097 "Операцията не можа да бъде завършена. (Грешка в Cocoa 4097.)"

or

Небалансирани повиквания за започване/край на преходите на външния вид за .

TWTweetComposeViewController (не се появява)

TWTweetComposeViewController *viewController = [[TWTweetComposeViewController alloc]init];
viewController.completionHandler = ^(TWTweetComposeViewControllerResult result){
    NSLog(@"Result : %d",result);
};
[self presentViewController:viewController animated:YES completion:NULL];

Дневник

Резултат : 0

MFMailComposeViewController (появява се за момент и отхвърля скоро)

- (void)send:(NSString*)email{
    if ([MFMailComposeViewController canSendMail]) {
        MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
        picker.mailComposeDelegate = self;

        NSArray *toRecipients = @[email];
        [picker setToRecipients:toRecipients];

        [picker setSubject:@"Subject"];
        [picker setMessageBody:@"Body" isHTML:NO];
        [self.navigationController presentViewController:picker animated:YES completion:NULL];
    }
}

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
    [self dismissViewControllerAnimated:YES completion:^{
        NSLog(@"error:%@,result:%d",error.description,result);
    }];
}

Дневник

_serviceViewControllerReady:error: Error Domain=NSCocoaErrorDomain Code=4097 „Операцията не може да бъде завършена. (Грешка на Cocoa 4097.)“ Небалансирани извиквания за започване/завършване на преходите за показване за . грешка:(нула),резултат:0


person Yu Tamura    schedule 24.09.2013    source източник
comment
интересно, можете ли да покажете кода си?   -  person Woodstock    schedule 24.09.2013
comment
Благодаря ви за коментара. Редактирах въпроса.   -  person Yu Tamura    schedule 24.09.2013
comment
Можете ли да опитате да зададете animated:no на преходи?   -  person Woodstock    schedule 24.09.2013
comment
Няма разлика с TWTweetComposeViewController. Относно MFMailComposeViewController, не се появява ViewController и се срива (EXC_BAD_ACCESS).   -  person Yu Tamura    schedule 24.09.2013
comment
Срещал съм абсолютно същия проблем, но само на iPhone. iPad не показва същия проблем за мен. Освен ако не чуя друго, вярвам, че това е грешка в iOS 7. Ако зададете точка на прекъсване на крайния делегатен метод, резултатът за пощенския контролер е MFMailComposeResultCancelled.   -  person Ryan    schedule 29.09.2013
comment
Виждаме това само на iPhone 5s, който в момента работи с iOS 7.0.2 (11A501). Компилирането на абсолютно същия код и стартирането му на iPhone 5 не показва проблема. Компилацията беше само 32-битова, така че това не е 64-битов проблем в нашето приложение. Изглежда обаче, че това е 32- срещу 64-битов проблем от страна на Apple. Когато компилираме нашето приложение с arm64, тези изгледи се показват правилно. Може ли някой да потвърди?   -  person Florian    schedule 30.09.2013
comment
Получавам същото поведение в същите ситуации, използвайки UIActivityViewController и SLComposeViewController   -  person Dima    schedule 01.10.2013
comment
вижте отговора ми за подробности   -  person Dima    schedule 01.10.2013
comment
Свързан въпрос с подобен отговор: stackoverflow.com/questions/20411489 /   -  person Graham Perks    schedule 24.01.2014


Отговори (10)


Оказва се, че проблемът се появява само при персонализиране на UIBarButtons. Ако използваме следното в нашето 32-битово приложение, работещо на iPhone 5s, имаме проблема:

[[UIBarButtonItem appearance] setTitlePositionAdjustment:UIOffsetMake(0, 1.0)
                                           forBarMetrics:UIBarMetricsDefault];

Оставянето на този ред заобикаля проблема. Подали сме радар.

person Florian    schedule 01.10.2013
comment
Благодаря ви за отговора. Премахнах [[UITabBarItem izgled] setTitlePositionAdjustment:UIOffsetMake(0, -1)]; и поправих този проблем! - person Yu Tamura; 04.10.2013
comment
Съобщих за този проблем, както и за rdar://15165678 - person Alex Pretzlav; 07.10.2013
comment
Това е лудост, аплодирам ви, че открихте грешката в кода на Apple. - person runmad; 09.10.2013
comment
Същият проблем тук с QLPreviewController. Персонализирането на titlePosition на UIBarButtonItem във версии по-малки от 7 поправи моя проблем. - person Ian Hoar; 16.10.2013
comment
Имах същото преживяване, докато използвах API за външен вид на UISearchBar. [searchBarApperance setPositionAdjustment:UIOffsetMake(100, 0) forSearchBarIcon:UISearchBarIconClear]; - person Sanjit Saluja; 17.10.2013
comment
Премахнах [[UITabBarItem външен вид] setTitlePositionAdjustment:UIOffsetMake(0.0f, -3.0f)]; Ще отворя радар за това. iPhone5S / iOS 7.0.x / XCode 5.0 - person loretoparisi; 25.10.2013
comment
Отговорът на Brandyn Brosemer ми помогна: изграждането на 64 бита решава проблема. - person de.; 13.02.2014

Това е проблем, когато не компилирате за 64 бита (arm64) в настройките на вашия проект. Въпреки че това не винаги може да е опция за някои хора, тъй като в момента Google Analytics не поддържа 64-битови устройства.

person Brandyn Brosemer    schedule 22.10.2013
comment
и аз ям предишните си думи тук; имаше неправилна настройка за изграждане и след като това беше коригирано и успя да изгради за 64, този проблем изчезна. Гласуване за... ;-) - person wkhatch; 28.01.2014

Може да успеете да избегнете този проблем с някои подкласове. Имах същия проблем и в моя случай виновникът беше:

[[UISearchBar appearance] setSearchTextPositionAdjustment:UIOffsetMake(15.0f, 0.0f)];

Така или иначе вече използвах подклас на UISearchBar, така че промених това на:

[[KA_SearchBar appearance] setSearchTextPositionAdjustment:UIOffsetMake(15.0f, 0.0f)];

Това реши проблема за мен. Тестван само на iPhone 5s, iOS 7.0.3.

person Sean Mahan    schedule 13.11.2013
comment
Радар като rdar://15461545 - person Sean Mahan; 14.11.2013

Получавам същото поведение в същите ситуации. В моя случай се оказа, че е причинено от използването на селектора за външен вид "setSeparatorInset" на UITableView. Отърването от това реши проблема. Това със сигурност изглежда като грешка от страна на Apple, но поне има заобиколно решение.

Този въпрос показва, че някой има подобен проблем и в техния случай се отървава от Селекторът за външен вид на UISearchBar го поправи. Значи нещо не е наред с някои от тези UIAppearance селектори.

person Dima    schedule 30.09.2013

Тази публикация ми помогна да намеря решение на подобен проблем. Но проблемът ми не беше свързан с лентата с раздели, така че реших да споделя, ако някой друг попадне на тази публикация:

Модалът за поща се отваря при докосване на клетка от таблица, но незабавно се отхвърля. В моя случай този код причини проблема:

[[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil] setFont:[UIFont systemFontOfSize:17.0]];

Изтрих го и всичко работи!

person SuperRunt    schedule 30.10.2013

В моя случай следният код ще причини същия проблем на 64-битова машина или симулатор. Надявам се да помогна на някой да се сблъска с този проблем.

if ([UITableViewCell instancesRespondToSelector:@selector(setSeparatorInset:)]) {
    [[UITableViewCell appearance] setSeparatorInset:UIEdgeInsetsZero];
}
person Ken Kuan    schedule 27.12.2013

Този проблем възниква в iPad air (64 бита), когато приложението не е съвместимо за 64 архитектура. Проблемът, който срещнах, беше, че всеки UIAppearance селектор, който се опитва да използва UIOffsetMake/UIOffsetZero, не работи правилно! пример

    [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(1.0, 1.0) forBarMetrics:UIBarMetricsDefault];

or

    [[UITableViewCell appearance] setSeparatorInset:UIEdgeInsetsMake(0, 5, 0, 5)];

Мисля, че това е грешка в кода на Apple и опитах няколко неща, но нищо не работи. По-добре, ако можете да коментирате местата, където задавате Insets в селекторите на UIAppearance

person Chamira Fernando    schedule 15.01.2014

Имах същата грешка, когато използвах SLComposeViewController за споделяне с Facebook или Twitter, използвайки симулатора на 64-бита или iPhone 5s, след което изтрих всеки ред от код, който използва "облик, например [UITableViewCell външен вид] или [UIBarButtonItem външен вид], и всяко бягане е ок.

person Jaime Leon    schedule 16.01.2014

Актуализирах xcode до версия 5.1 и сега работи добре.

person user3427846    schedule 17.03.2014
comment
Бихте ли предоставили повече подробности? - person bjb568; 17.03.2014

NSXPCConnectionInterrupted = 4097. Бих искал вашият код да опита отново командата, тъй като грешката изглежда преходна.

person LevinsonTechnologies    schedule 13.02.2015