2013-03-08 5 views
3

MFMailComposeViewController представлен и работает отлично, когда я не настраиваю шрифты в своем приложении. Но когда я это делаю, в 50% случаев он был представлен и вызывается непосредственно его делегатом с mailComposeController:didFinishWithResult: с результатом MFMailComposeResultCancelled точно так же, как если бы пользователь просто попытался его закрыть.MFMailComposeViewController не работает при настройке шрифта с прокси-сервером UIAppearance

А также вызвать эту ошибку в консоли:

_serviceViewControllerReady:error: Error Domain=XPCObjectsErrorDomain Code=2 "The operation couldn’t be completed. (XPCObjectsErrorDomain error 2.)" 

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

Для каждой панели навигации в моем приложении у меня есть собственный дизайн. Для достижения этой цели я использовал прокси-сервер, как внешний вид в этом:

UIImage *navBarBackground = [UIImage stretchableHorizontalImageNamed:@"navbar-background"]; 
[[UINavigationBar appearance] setBackgroundImage:navBarBackground forBarMetrics:UIBarMetricsDefault]; 
[[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"navbar-shadow"]]; 
[[UINavigationBar appearance] setTitleTextAttributes:@{ 
    UITextAttributeTextColor: [UIColor colorWithRed:0.965f green:0.635f blue:0.647f alpha:1.f], 
    UITextAttributeFont : [UIFont brothersBoldFontOfSize:20.f], 
    UITextAttributeTextShadowColor: [UIColor blackColor], 
    UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0, -1)] 
}]; 

UIBarButtonItem *navBarButtonItemAppearance = [UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]; 
[navBarButtonItemAppearance setTitleTextAttributes:@{ 
    UITextAttributeTextColor: [UIColor colorWithRed:0.478f green:0.008f blue:0.023f alpha:1.f], 
    UITextAttributeFont : [UIFont brothersBoldFontOfSize:17.f], 
    UITextAttributeTextShadowColor: [UIColor colorWithWhite:1.f alpha:0.3f], 
    UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0, 1)] 
} forState:UIControlStateNormal]; 

я удалил некоторые базовые настройки для пирог с folowing:

[[UINavigationBar appearanceWhenContainedIn:[UIPopoverController class], nil] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; 

Это работает отлично для пирог. Но невозможно удалить его для почтового композитора, даже когда я использую «когда он содержится в« MFMailComposeViewController »и устанавливает его в nil, он все еще здесь.

Я также пытаюсь подклассифицировать его или установить системный шрифт, но это ничего не меняет. Он был представлен, напечатал ошибку, позвонил своему делегату и уволился. Я только что увидел, что, когда он работает, шрифт не применяется системой, и когда ему не предоставлен пользовательский шрифт, как показано ниже.

enter image description here

+0

Эй, у тебя есть решение для этого? Потому что я столкнулся с той же проблемой, а также с поиском в Интернете через пару дней. Если вам удастся решить эту проблему, пожалуйста, дайте мне знать ... :) – Krunal

+0

Решений пока нет. –

+1

У меня есть решение .... если вы установили пользовательские шрифты с 'UINavigationBar' в любом из ваших классов, это повлияет на' MFMailComposeViewController'. Таким образом, вы удаляете пользовательский шрифт Navigationbar из всех классов, он будет работать нормально. Я думаю, что это единственное решение. Возможно, вы установили пользовательские шрифты с помощью Navigationbar ... :) – Krunal

ответ

2

Проблема заключается в том, что пользовательские шрифты займет слишком много времени для загрузки и запускает тайм-аут от ожидания-заборов.

См: MFMailComposeViewController throws a viewServiceDidTerminateWithError and then exits when using a custom title font

+1

Я тоже видел эту ссылку, но решения нет. Обходной код doen't работать (на iOS 6). –