Странно поведение с редактора на съобщения в iOS 7

Работя върху приложение, което изпраща имейли и текстови съобщения от списъка с контакти на потребителя.

Имам контролер за изглед, който представя или MFMessageComposeViewController, или MFMailComposeViewController, с правилната настройка на делегатите. Въпреки това потребителският интерфейс, който се появява в композитора, изглежда изместен и неправилен.

Ето кода за представяне на съставителя на съобщения:

if ([MFMessageComposeViewController canSendText]) {
    MFMessageComposeViewController *composer = [[MFMessageComposeViewController alloc] init];
    composer.messageComposeDelegate = self;
    composer.recipients = [NSArray arrayWithObject:[self unformattedPhoneNumber:number]];
    [self presentViewController:composer animated:YES completion:nil];
}

Доста прости неща. Въпреки това, когато е представен контролерът за модален изглед, той изглежда така:

Обърканото текстово поле за избор на контакт в контролера за изглед за съставяне на съобщение

Текстовото поле за избор на контакт (където можете да въвеждате потребители по име или номер) се появява за кратко на черен фон, но след това се анимира, за да бъде скрито зад лентата за навигация. Още по-странно е, че текстовото поле за контакт започва като първия отговор, така че все още можете да пишете в него и ето резултата, когато започнете да търсите контакти:

Въвеждане на контакти тук

Използвал съм съставителя на поща и съобщения много пъти преди в предишни приложения, но това е грешка, която никога не съм виждал преди. Опитах се да представя VC в отделна тема, като потвърдих телефонния номер, който използвам, и изглежда нищо не го променя. Забелязах, че ако променя window.backgroundColor на [UIColor whiteColor], текстовото поле за контакт има бял фон, така че изглежда, че тази част от контролера за изглед на съобщения е прозрачна. Имам подобен проблем с мейл композитора.

Някой да е преживял нещо подобно или да има някакви мисли?


person bachonk    schedule 29.05.2014    source източник


Отговори (1)


Използвате ли UIAppearance, за да персонализирате външния вид на приложението си? Изглежда, че сте, тъй като стилът на лентата за навигация в този изглед за композиране не е по подразбиране.

Това може да се дължи на персонализирането на някои от изгледите, които тези вътрешни компоненти използват, което води до повреда на някои от тях. За да тествате това, отървете се от целия си UIAppearance код и опитайте отново, за да видите дали все още се появява.

Ако случаят е такъв, ще трябва да го заобиколите, като стесните вашите UIAppearance извиквания с appearanceWhenContainedIn:, така че вътрешните класове да не бъдат засегнати.

person Dima    schedule 29.05.2014
comment
@bachonk: Можете ли да поставите кода си за решаване на този проблем? Имам същия проблем, но не мога да намеря решение, използвайки горния отговор - person TamilKing; 15.07.2015
comment
Използвах appearanceWhenContainedIn: за моя персонализиран UINavigationController подклас: [[UINavigationBar appearanceWhenContainedIn:[RCNavigationController class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:kLightFontName size:18.0f], NSFontAttributeName, [UIColor whiteColor], NSForegroundColorAttributeName, nil]]; - person bachonk; 20.07.2015