44 lines
1.3 KiB
Objective-C
44 lines
1.3 KiB
Objective-C
//
|
||
// KBFullAccessManager.h
|
||
// 统一封装:检测并管理键盘扩展的“允许完全访问”状态
|
||
//
|
||
|
||
#import <Foundation/Foundation.h>
|
||
#import <UIKit/UIKit.h>
|
||
|
||
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
|
||
|