UITextField с inputView не работает в некоторых симуляторах iOS 8

Использование Xcode 6 с iOS 8 SDK и минимальным поддерживаемым iOS 7.

Этот код не работает на iPhone 5s 8.0, iPhone 6, iPhone 6 Plus, но работает на iPhone 5 8.0 и iPhone 4s 8.0.

Он имеет одно текстовое поле. Текстовое поле имеет inputView и inputAccessoryView для отображения средства выбора даты и панели инструментов с помощью одной кнопки.

Я сделал достаточно, чтобы продемонстрировать проблему. В этих симуляторах более высоких моделей отображается только панель инструментов, а не средство выбора.

Это ошибка в симуляторе или изменение в iOS 8, которое все еще работает?

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 43, 320, 480)];
    pickerView.delegate = self;
    pickerView.dataSource = self;
    [pickerView setShowsSelectionIndicator:YES];
    pickerView.backgroundColor = [UIColor whiteColor];
    _textField.inputView = pickerView ;
    _textField.delegate = self;

    UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 56)];
    toolbar.barStyle = UIBarStyleBlackOpaque;
    [toolbar sizeToFit];

    NSMutableArray *barItems = [[NSMutableArray alloc] init];
    UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    [barItems addObject:flexSpace];
    UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:nil];
    [barItems addObject:doneBtn];
    [toolbar setItems:barItems animated:YES];

    _textField.inputAccessoryView = toolbar;


}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return 3;
}

@end

person Jason Hocker    schedule 19.09.2014    source источник
comment
Вы пробовали Hardware -> Keyboard -> Toggle Software Keyboard в симуляторе?   -  person CrimsonChris    schedule 20.09.2014
comment
Казалось, это не имело значения. Нужно ли перезапускать симулятор или что-то в этом роде после внесения изменений?   -  person Jason Hocker    schedule 20.09.2014
comment
Сняв флажок «Оборудование» => «Клавиатура» => «Подключить аппаратную клавиатуру», я сделал это за меня.   -  person Fred    schedule 20.09.2014
comment
секундочку, значит, если у пользователя подключена клавиатура, мы SOL?!   -  person colin lamarre    schedule 22.09.2014
comment
Снятие флажка сработало для меня. Это ошибка?   -  person Jason Hocker    schedule 23.09.2014


Ответы (3)


Проверьте состояние аппаратной клавиатуры симулятора iOS. В строке меню iOS Simulator выберите Оборудование > Клавиатура и снимите флажок Подключить аппаратную клавиатуру.

person Kumar Summan    schedule 13.10.2014

Всякий раз, когда у вас есть текстовое поле в фокусе, а клавиатура не появляется, попробуйте на своей физической клавиатуре команду + k или «Оборудование»> «Клавиатура»> «Переключить программную клавиатуру» на верхней панели вашего Mac, когда симулятор находится в фокусе окна.

person Kris Gellci    schedule 13.10.2014

Вы можете изменить стиль панели инструментов на значение по умолчанию и проверить. Меня устраивает.

person Sam    schedule 14.11.2014