Почему шрифт моего UITextField меняется при редактировании?

#iphone #cocoa-touch #uitextfield

#iPhone #cocoa-touch #uitextfield

Вопрос:

Шрифт моего UITextField становится светлее при редактировании и жирнее по завершении редактирования. Эти изображения должны иллюстрировать проблему:

Редактирование
Не редактируется

Кто-нибудь может объяснить, почему это так, и как это остановить?

Это весь код, который у меня есть для этого — сначала мой подкласс UITextField (который предназначен только для добавления полей):

 @interface RLTextField : UITextField {    
}
@end

@implementation RLTextField

- (CGRect)editingRectForBounds:(CGRect)bounds
{
    CGRect editingRect = CGRectMake(bounds.origin.x 35, bounds.origin.y-5, bounds.size.width, bounds.size.height);
    return editingRect;
}

- (CGRect)textRectForBounds:(CGRect)bounds
{
    CGRect editingRect = CGRectMake(bounds.origin.x 35, bounds.origin.y-5, bounds.size.width, bounds.size.height);
    return editingRect;
}
@end
  

И затем, где он фактически добавлен в мой ViewController:

 - (void)viewDidLoad
{   
    CGRect noteTitleTextFrame  = CGRectMake(self.view.bounds.origin.x, 
                                            self.view.bounds.origin.y 10, 
                                            self.view.bounds.size.width, 
                                            44);
    RLTextField *textField = [[RLTextField alloc] initWithFrame:noteTitleTextFrame];
    self.nameTextField = textField; [textField release];
    self.nameTextField.delegate = self;
    self.nameTextField.borderStyle = UITextBorderStyleNone;    
    self.nameTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentBottom;
    self.nameTextField.font = [UIFont fontWithName:@"Courier" size:21];
    [self.view addSubview:self.nameTextField]; 
}
  

Комментарии:

1. могу ли я узнать, что подразумевается под RLTextField?

2. Это всего лишь мой подкласс UITextField — я добавил @interface выше, чтобы было понятнее.

Ответ №1:

проверил ваш код …. и для этого есть только одно слово WTF ….!
Я не знаю, что в этом плохого, но для этого есть решение, и оно

 self.nameTextField.font = [UIFont fontWithName:@"Courier New" size:21];
  

просто измените название шрифта. Это сработает .. приветствия 🙂
Кстати, вы, вероятно, обнаружили ошибку, а может быть, и нет, поэтому Apple добавила «Courier New».
Я не знаю…

Комментарии:

1. Ха, я на мгновение подумал, что «WTF» относится к качеству моего кодирования! В любом случае, как вы и предлагали, изменение шрифта сработало. Спасибо!

2. У меня такая же проблема, но я не знаю, почему это происходит. Я использую шрифт Avenir Next.

3. @S.J Я действительно понятия не имею, почему это происходило, я мог бы использовать другой шрифт или просто сообщить об ошибке @ bugreport.apple.com