// // KBFullAccessManager.h // 统一封装:检测并管理键盘扩展的“允许完全访问”状态 // #import #import NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSInteger, KBFullAccessState) { KBFullAccessStateUnknown = 0, // 无法确定(降级处理为未开启) KBFullAccessStateDenied, // 未开启完全访问 KBFullAccessStateGranted // 已开启完全访问 }; /// 状态变更通知(仅扩展进程内广播) extern NSNotificationName const KBFullAccessChangedNotification; /// 键盘扩展“完全访问”状态管理 @interface KBFullAccessManager : NSObject + (instancetype)shared; /// 绑定当前的 UIInputViewController(用于调用系统私有选择器 hasFullAccess;按字符串反射,避免编译期引用) - (void)bindInputController:(UIInputViewController *)ivc; /// 当前状态(内部做缓存;如需强制刷新,调用 refresh) - (KBFullAccessState)currentState; /// 便捷判断 - (BOOL)hasFullAccess; /// 立即刷新一次状态(若状态有变化会发送 KBFullAccessChangedNotification) - (void)refresh; /// 若未开启,则在传入视图上展示引导弹层(使用现有的 KBFullAccessGuideView);返回是否已开启 - (BOOL)ensureFullAccessOrGuideInView:(UIView *)parent; @end NS_ASSUME_NONNULL_END