You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iPad横屏下添加Apple Wallet卡片致应用崩溃的解决方案

问题根因

你的判断完全准确:PKAddPassesViewController 是PassKit框架提供的系统控制器,仅支持竖屏方向展示。在横屏锁定的iPad上唤起该控制器时,系统会校验当前应用的可用方向与控制器支持的方向,二者无交集且控制器允许自动旋转时,就会直接触发你贴出的崩溃。

修复方案

根据你应用本身的方向支持需求,选择以下任意一种方案即可解决问题:

方案1:重写控制器方向方法(推荐,无侵入不影响其他页面)

通过分类/扩展重写PKAddPassesViewController的方向相关方法,强制其仅支持竖屏展示,不需要修改应用全局配置,也不会影响其他页面的方向逻辑。
Objective-C 实现:

//  PKAddPassesViewController+OrientationFix.h
#import <PassKit/PassKit.h>
@interface PKAddPassesViewController (OrientationFix)
@end

//  PKAddPassesViewController+OrientationFix.m
@implementation PKAddPassesViewController (OrientationFix)
- (BOOL)shouldAutorotate {
    return NO;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}
@end

将上述两个文件直接加入项目即可,不需要额外调用,系统加载类时会自动生效。

Swift 实现:

import PassKit

extension PKAddPassesViewController {
    open override var shouldAutorotate: Bool {
        return false
    }
    
    open override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .portrait
    }
    
    open override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
        return .portrait
    }
}

将该扩展放在项目任意被编译引入的Swift文件中即可生效。

注意:如果你的iPad应用开启了多Scene支持,优先选择该方案,稳定性最高。

方案2:全局调整应用支持方向(仅适用于本身不需要横屏的应用)

如果你的应用本身就只需要竖屏展示,直接修改Info.plist中Supported interface orientations (iPad)配置项,删除所有横屏相关的枚举值,仅保留竖屏配置,从全局层面避免方向不匹配问题。

方案3:临时调整设备方向(适合不想修改系统类方法的场景)

在点击按钮触发presentPKAddPassesViewController前,临时将设备方向调整为竖屏,待控制器dismiss后再恢复原有方向:

// 唤起前临时切竖屏
UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation")
// 执行present逻辑
let passVC = PKAddPassesViewController(pass: yourTargetPass)
present(passVC, animated: true)

// 在控制器dismiss的回调中恢复原有应用方向即可
验证方式

修复后在横屏锁定的iPad上测试:点击「添加到Apple Wallet」按钮会正常弹出竖屏样式的添加卡片弹窗,无崩溃,弹窗关闭后应用原有页面的方向逻辑不受影响。

内容的提问来源于stack exchange,提问作者Dreiohc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 13:21:21