gpt4 book ai didi

ios - iOS 8 中 UITextView 的自定义键盘因方向错误而崩溃

转载 作者:行者123 更新时间:2023-11-29 12:37:22 51 4
gpt4 key购买 nike

这是一款在 iOS 7 下运行良好的应用程序。刚开始 iOS 8 测试时,在一个 View 中输入数据所必需的自定义键盘在附加到 UITextView 或 UITextField 时崩溃了。实际错误是应用程序的方向无效,应仅纵向显示。

* 由于未捕获的异常“UIApplicationInvalidInterfaceOrientation”而终止应用程序,原因:“支持的方向与应用程序没有共同的方向,并且 [UICompatibilityInputViewController shouldAutorotate] 正在返回 YES”

所以看起来当 iOS 8“兼容性” Controller 以某种方式混合时从 shouldAutorotate 返回 YES 而它应该返回 NO 时发生崩溃。

我的应用仅针对 iPhone,它在项目/plist 设置中仅支持纵向,主视图 NavController 使用以下代码强制执行此操作

-(BOOL)shouldAutorotate
{
return NO;
}

- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar
{
return UIBarPositionTop;
}

- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}

每个 View Controller ,包括自定义键盘的 View Controller ,都从 shouldAutoRotate 返回 NO。我已经验证了 shouldAutoRotate 正在为自定义键盘 Controller 调用,然后崩溃直接发生。

一个奇怪的问题是,没有为显示自定义键盘的 View 的 Controller 调用 shouldAutoRotate 方法。

当为需要自定义键盘的特定 textView 调用 textViewShouldBeginEditing 时,自定义键盘 View 由该父 View Controller 附加到 textView。

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
if (textView == self.rangeText) {
[self showKeyboard];
textView.inputView = keyboardView;
textView.inputAccessoryView = keyboardView;
[keyController setTextView: textView];
keyController.maxCards = maxCards;
activeTextField = nil;
}
return YES;
}

- (void) showKeyboard {
if (!keyboardView) {
[self createCustomKeyboard];
}
// Restore frame if it got wierd.
[keyboardView setFrame: keyboardFrame];
[keyboardView setHidden: NO];
[keyboardView becomeFirstResponder];
}

- (void) createCustomKeyboard {
keyboardView = [[CardsInputView alloc] initWithFrame: self.view.frame];
keyController = (CardsInputController *) [keyboardView nextResponder];
errCheckNil(keyController);
keyController.view = keyboardView;
if (!keyFrameSet) {
keyboardFrame = keyboardView.frame;
keyFrameSet = YES;
}
}

最佳答案

不确定为什么我会为此得到 -1,因为这是一个明确记录的问题。无论如何,修复结果是从 UIApplication supportedInterfaceOrientationsForWindow 返回 UIInterfaceOrientationMaskPortrait,我一直在返回 UIInterfaceOrientationMaskPortraitUpsideDown,但对于这个应用程序,单一方向是首选。

关于ios - iOS 8 中 UITextView 的自定义键盘因方向错误而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25943655/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com