EXC_BAD_ACCESS на UITextAttributeFont (неверная версия iOS) - PullRequest
1 голос
/ 16 декабря 2011

Я использую setTitleTextAttributes для изменения шрифта на UISegmentedControl следующим образом.

<code>UIFont *font = [UIFont boldSystemFontOfSize:14.0f];
NSDictionary *attributes = [NSDictionary dictionaryWithObject:font forKey:UITextAttributeFont];
[self setTitleTextAttributes:attributes forState:UIControlStateNormal];

Это нормально работает в симуляторе, но вылетает при работе наiPad.Ошибка неверного доступа возникает при создании словаря, и я использовал оператор NSLog, чтобы проверить, что UITextAttributeFont генерирует ошибку.

Есть идеи, в чем проблема или есть альтернативный метод для установки шрифта?

РЕДАКТИРОВАНИЕ

Я только что понял, что iPad работает под управлением iOS 4 (я думаю, что это поддерживается на iOS> = 5).Каков наилучший способ проверки поддержки версий?

Основываясь на предложении Грязного Генри, правильная реализация выглядит следующим образом.

<code>if ([self respondsToSelector:@selector(setTitleTextAttributes: forState:)]) {
      UIFont *font = [UIFont boldSystemFontOfSize:14.0f];
      NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys: font, UITextAttributeFont, nil];
      [self setTitleTextAttributes:attributes forState:UIControlStateNormal];
}

1 Ответ

4 голосов
/ 16 декабря 2011

Ваш iPad работает под управлением iOS 5.0 или более поздней версии? (UITextAttributeFont был введен в этой версии). (я тоже не вижу ничего плохого в вашем коде)

...