inputAccessoryView 不会在调用后自动出现 "reloadInputViews"

inputAccessoryView doesn't appear automatically after call "reloadInputViews"

首先,我将名为 MyTextEditorView 的 UIView 子类化,以将其 inputAccessoryView 覆盖为可读写 属性。

@属性(保留,读写)UIView *inputAccessoryView;

并且我初始UIInputView作为显示视图,然后添加一个UIView作为子视图;

UIInputVIew *myInputAccessoryView = [[UIInputView alloc] initWithFrame:CGRectMake(0,0,screenWidth,44)];

[myInputAccessoryView addSubview:myDisplayView];

[self setInputAccessoryView:myInputAccessoryView];

[self reloadInputViews];

并且我已经为 return 覆盖了 canBecomeFirstResponder YES;

- (BOOL)canBecomeFirstResponder
{
     return YES;
}

当我第一次在我的 viewController1 中初始化 MyTextEditorView 并使其成为第一响应者时,然后 inputAccessoryView 自动 appear.But 当我从这个 viewController1 推送另一个 viewController2 并返回到 viewController1 时,inputAccessoryView 不会自动出现在使它成为第一响应者。

但是,当我添加如下代码时:

    UIInputVIew *myInputAccessoryView = [[UIInputView alloc]  initWithFrame:CGRectMake(0,0,screenWidth,44)];

[myInputAccessoryView addSubview:myDisplayView];

[self setInputAccessoryView:myInputAccessoryView];

[self resignFirstResponder];

[self reloadInputViews];

[self becomeFirstResponder];

之后,这个inputAccessoryView可以自动出现在任何case.But这让我很困惑,谁能帮我提出为什么inputAccessoryView不能自动出现?提前谢谢!!!

我在 iOS7 和 iOS8 上测试了这个问题。我发现它是一个 iOS8 bug.After 我在 iOS8 平台上用 UIAlertController 替换了 UIActionSheet,效果很好。 我猜 UIActionSheet 作为 UIView 的子类不同于 UIAlertController 作为 UIViewController 的子类,这可能与我的编辑器冲突