我正在开发一个支持纵向和横向模式的基本 iOS 应用程序。当 iPhone 模拟器键盘以横向打开并且我将应用程序切换到纵向模式时,我无法使用我的 Mac 物理键盘在任何文本字段中输入任何内容。
有谁之前经历过这个吗?这是一个已知的错误吗?
找到了一个对我有用的好解决方案。
打开模拟器,然后找到菜单 Hardware -> Keyboard 有三个选项:
在 Xcode 9 中,我在 iPhone 8+ 模拟器上遇到了同样的问题。我能够通过这种方式解决它:
~/Library/Preferences/com.apple.iphonesimulator.plist
文件CaptureKeyboardInput
值设置为YES
从模拟器菜单>>硬件>>键盘>>连接硬件键盘
或者
只需按下⌘ + ⌂ + K
在您开始输入之前(当屏幕键盘出现时),只需按下命令键,然后松开。这应该重新启用模拟器中的键盘。
启动 iOS 模拟器并启用Hardware > Keyboard > Connect Hardware Keyboard
.
(您可能不小心按CMD + SHIFT + K
- 与 Xcode 中的 Clean 相同的快捷方式禁用了它)
这些建议都不适合我。我关闭了 iOS Simulator 应用程序并重新启动它。那为我修好了。
在模拟器上尝试更改设备。然后在原始设备上再次运行您的应用程序。这对我有用。
如果仅第一步不起作用,请取消选中以下选项:iOS Uses the same keyboard layout as OS X 然后更改设备。
我想它会做一些随机的事情,直到它起作用。猴子固定。
我看到了同样的问题。如果您使用 Command-LeftArrow 和 Command-RightArrow 快捷方式在模拟器中旋转设备,我认为该问题与模拟器中“卡住”的命令键有关。
在我们等待 Apple 修复时,解决此问题的一种方法是通过选择菜单选项而不是键盘快捷键来旋转设备。这会旋转设备,并且似乎使键盘处于工作状态。
重复以下命令两次对我有用!
CMD+Shift+K
CMD + SHIFT + K
我已按此命令 2 次进行切换,然后它开始工作
我刚刚安装了新版本的 Xcode (5.0),iOS 模拟器中的键盘在首次启动时无法使用。只是重新启动模拟器有帮助。
只需执行这些简单的步骤,这不是问题。
打开模拟器
Going To Top 你会看到 Option Hardware 点击这个。
当您单击硬件时,会出现一些选项,其中一个选项是键盘。
单击键盘选项,您会看到三个选项出现。
如果您想使用您的 mac 按钮键盘,请选择第二个选项连接硬件键盘。
如果您想使用移动敲击键盘,请选择第三个选项。
第一个选项适用于通过代码选择键盘的人。
享受所有的工作。
对我来说,选择模拟器,选择硬件-> 键盘-> 连接硬件键盘。
它对我有用。
我刚刚试过你刚才说的,这是真的,如果我把它移到横向然后再转到纵向,它就不起作用了。它没有任何逻辑,因为我的应用程序甚至没有改变,而且它在设备上运行良好,所以这是模拟器中的一个错误。
您可以使用以下方法向 Apple 报告:
我刚刚退出了我的模拟器,它对我有用。
XCode 12/13:在模拟器窗口中,从顶部窗格中,I/O>Input>Send Keyboard Input to Device
或 alt-command-k
退出模拟器并在终端中运行以下命令:
rm ~/Library/Preferences/com.apple.iphonesimulator.plist
真正适合我的解决方案是删除模拟器并创建新的。我认为这个错误通常发生在从键盘到模拟器的所有快捷键都不起作用时。
我在使用iPhone6模拟器时遇到问题,我将其更改为iPhone7。在 iPhone7 上,我可以继续我的工作。
只需使用 CMD+SHIFT+K,键盘将自行激活。
如果您的 Mac 键盘在所有选项和设置正确后仍然断开连接,原因之一是旋转设备。
如果在模拟器启动的时候CMD+←或→提前旋转设备,Mac键盘无论如何都不会工作;更改菜单设置无济于事!在旋转设备之前使用 Mac 键盘在设备内部输入可能会有所帮助。
关闭“将菜单快捷方式发送到设备”并重新启动模拟器有时会有所帮助。如果我得到可靠的、可重新创建的行为,我会更新。
我发现 Mac 键盘在我运行和退出 Simulator 的时间中大约有一半可以工作。这么多年过去了,50%还不错!?
我只是重新启动模拟器,它对我有用。
每当我旋转模拟器时都会遇到这个问题。按照更改硬件选项的建议对我不起作用,也不会重新启动 iOS 模拟器。
我发现了一个技巧,在旋转后单击编辑区域会使 Mac 键盘最终工作。
我Main.storyboard
在代码中删除并创建主窗口后遇到了这个问题。恢复使用Main.storyboard
为我修复了它。
有一个用于编辑 plist 文件的库,称为 plistlib。这是我的代码:
import plistlib
file_name = ('path/to/com.apple.iphonesimulator.plist')
try:
p = plistlib.readPlist(file_name)
p["ConnectHardwareKeyboard"] = "NO"
plistlib.writePlist(p, file_name)
except:
print("Failure")
这将读取 plist 文件,将ConnectHardwareKeyboard
值更改为No
,然后将新文件写入相同的位置。这对我有用,但如果有更好的方法,请告诉我。我在编码方面还是新手。
对于带有 Xcode 9.3 的 10.0 版(SimulatorApp-851.2 CoreSimulator-518.19),对我没有任何帮助。我通过硬件-> 擦除所有内容和设置-> 擦除重置了模拟器。清理项目并在模拟器上运行。键盘连接又回来了。
在做了这么多事情之后,只需重新启动我的机器并启用以下功能即可。
在模拟器中启用此功能:硬件 -> 键盘 -> 连接硬件键盘
对我来说,这样做适用于 iPhone 8+ 模拟器 iOS 11.2: 1. 转到菜单 -> 硬件 -> 删除所有内容和设置。2. 从 xcode 中删除派生数据。Xcode -> 首选项 -> 位置 -> 单击“高级”按钮左侧的右箭头。
对我来说,在打开的模拟器上,在你的 mac 菜单中,单击硬件并到达键盘选项,然后选择切换软件键盘。如图所示
对我来说,这个问题来自window
初始化SceneDelegate
在 XCode 12、swift 5、最小部署目标 14、Storyboard 中
我使用的代码与下面相同
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
let windowScene = UIWindowScene(session: session, connectionOptions: connectionOptions)
self.window = UIWindow(windowScene: windowScene)
setRootVC()
}
在编写此代码后,我遇到了这个问题,paste
正在工作,但Keyboard
无论如何都没有显示也没有工作Mac Keyboard
为了解决这个问题,我删除了这些行
let windowScene = UIWindowScene(session: session, connectionOptions: connectionOptions)
self.window = UIWindow(windowScene: windowScene)
问题已为我解决,现在 SceneDelegate 看起来像
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
setRootVC()
}