在一些iOS 8模拟器中,使用inputView的UITextField无法正常工作。

4
使用 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,用于显示日期选择器和带有一个按钮的工具栏。
我只做了足够说明问题的部分。在那些更高级别的模拟器上,只会显示工具栏而不是选择器。
这是模拟器的 bug 还是 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

1
你尝试过在模拟器中使用 硬件 -> 键盘 -> 切换软键盘 吗? - CrimsonChris
那似乎没有什么区别。在更改后,我需要重新启动模拟器或类似的东西吗? - Jason Hocker
9
取消勾选「硬件」=>「键盘」=>「连接硬件键盘」,这对我有用。 - Fred
等一下,所以如果用户插了键盘,我们就完蛋了?! - colin lamarre
1
取消勾选对我有用。这是一个错误吗? - Jason Hocker
3个回答

4

检查您的iOS模拟器硬件键盘状态。在iOS模拟器菜单栏中,进入硬件 > 键盘并取消选择连接硬件键盘选项。


0

你可以将工具栏样式更改为默认值并检查。这对我有效。


0

每当您的文本字段处于焦点状态且键盘未出现时,请尝试在模拟器成为焦点窗口时,从Mac顶部栏中使用物理键盘的command+k或Hardware > Keyboard > Toggle Software Keyboard。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接