15

我正在试验自定义键盘如何影响我的应用程序。我在 iPhone 6 上安装了 Swype。

我发现在我的某些视图中,我在文本字段上设置了自定义 inputView 属性,Swype 键盘覆盖并呈现而不是我的选择器。这完全破坏了我的 UI 并且不能被允许。

有没有办法明确告诉 iOS 8 只使用我设置的 inputView?

这是一个错误,也许?允许第三方覆盖我的输入规范完全不是预期的行为吗?

4

4 回答 4

8

您可以使用以下代码为您的应用禁用自定义键盘:

将其包含在您的应用委托中:

- (BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdentifier:(NSString *)extensionPointIdentifier {
    if ([extensionPointIdentifier isEqualToString: UIApplicationKeyboardExtensionPointIdentifier]) {
        return NO;
    }
    return YES;
}
于 2014-10-01T19:53:15.383 回答
5

斯威夫特 4

  func application(_ application: UIApplication, shouldAllowExtensionPointIdentifier extensionPointIdentifier: UIApplicationExtensionPointIdentifier) -> Bool {
        if (extensionPointIdentifier == .keyboard) {
            return false
        }
        return true
    }
于 2018-08-19T05:51:19.987 回答
4

使用 Pablo Ezequiel Romero 的答案作为起点,我能够让事情为我工作。本质上,与其使用 aUIViewController作为自定义键盘,不如使用 aUIInputViewController并将您的控件放在UIInputViewController'sinputView中。然后,将 的inputViewUITextField分配UITextViewinputViewUIInputViewController

如果您使用自动布局,则需要确保正确设置所有内容并确保在 inputView 上设置初始高度约束并将其优先级设置为低于最大 999 级别(我使用的是 800)。任何高度都可以;系统将用它自己的一个约束替换您的约束。较低的优先级避免了自动布局冲突。(对我来说,如果我不包括这个约束,最终的视图根本不会有任何高度。)

当我完成所有这些操作时,我能够切换进出我的(应用程序内部的)自定义键盘和任何第三方键盘扩展。

于 2016-07-27T18:46:18.940 回答
2

我有一个类似的问题,我能够使用 UIInputViewController 修复它。基本上我在 inputView 中设置的视图是我的 UIInputViewController 子类的视图。我正在使用 UIViewController,但在更换基本视图控制器后,它开始运行良好。

于 2016-03-01T16:08:20.610 回答