iPadOS 26在弹出视图中浮动数字键盘时崩溃

移动开发 2026-07-11

按照下面的示例代码进行构建,在文本输入框中输入任意内容(确保数字键盘是弹出式,文本键盘是浮动的)。然后在工作表中多次点击文本字段之外的区域。

这将导致崩溃:

*** 由于未捕获的异常 'NSGenericException' 导致应用终止,原因:无法激活锚点为 的约束,因为它们没有共同祖先。约束或其锚点是否引用自不同视图层级中的项?这是非法的。'

由于未捕获的NSException类型而终止

CoreSimulator 1051.17.8 - 设备:iPad Pro 13英寸 (M5) (655000D7-41BC-4B13-BD07-BBA80D892E97) - 运行时:iOS 26.2 (23C54) - 设备类型:iPad Pro 13英寸 (M5)

有谁能想到一个可行的变通办法吗?我找不到。

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("Content")
            .sheet(isPresented: .constant(true)) {
                PresentedView()
            }
    }
}

struct PresentedView: View {

    @State private var text = ""

    var body: some View {
        ScrollView {
            VStack {
                TextField("Placeholder", text: $text)
                    .keyboardType(.numberPad)
            }
            .padding(80)
        }
    }
}

可复现的视频

解决方案

Are you using IQKeyboardManager, especially enableAutoToolbar?

我们在浮动的PhonePad上也看到了类似的iPadOS 26.x崩溃。在我们的场景中,数字键盘被收起后,IQ工具栏仍然可见,点击下一个验证码字段时触发同样的 _UIRemoteKeyboardPlaceholderView / 没有公共祖先的异常。

目前,我为让用户手动规避此问题而采取的方案如下:当用户触发小键盘输入框时,需要手动关闭底部工具栏。在下一个版本,我们计划移除 IQKeyboardManager,并在用户在数字键盘上输入后执行 endEditing:YES

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章