Xcode 11 Beta - iOS 13 Simulator - UITextField с заполнителем, получая сбой приложения - PullRequest
0 голосов
/ 10 июня 2019

В бета-версии Xcode 11 и симуляторе iOS 13 происходит сбой при доступе к ключу метки TextField _placeholderLabel.textColor.

Ключ, используемый для применения цвета текста заполнителя.

[textfield setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"];

«NSGenericException» - причина: «Доступ к ивару _placeholderLabel UITextField запрещен. Это ошибка приложения»

Ответы [ 2 ]

1 голос
/ 26 июня 2019

Вы можете сделать это с помощью среды выполнения:

добавить следующий код в нижнюю часть настройки заполнителя

Ivar ivar =  class_getInstanceVariable([UITextField class], "_placeholderLabel");
UILabel *placeholderLabel = object_getIvar(textField, ivar);
placeholderLabel.textColor = [UIColor whiteColor];

В Xcode 11 beta2 этот код работает, но я не знаю о версии GM или официальной версии.

Полный код:


#import "ViewController.h"
#import <objc/runtime.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor grayColor];
    self.title = @"UITextField Demo";

    UITextField *textField = [UITextField new];
    textField.frame = CGRectMake(0, 100, 300, 50);
    textField.placeholder = @"UITextField Demo";
    [self.view addSubview:textField];

    Ivar ivar =  class_getInstanceVariable([UITextField class], "_placeholderLabel");
    UILabel *placeholderLabel = object_getIvar(textField, ivar);

    placeholderLabel.textColor = [UIColor whiteColor];
}

@end
0 голосов
/ 10 июня 2019

У меня такая же проблема ... может нам просто нужно дождаться бета 2

...