先提交
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
//
|
||||
// KeyboardViewController+Private.h
|
||||
// CustomKeyboard
|
||||
//
|
||||
// Created by Codex on 2026/02/22.
|
||||
//
|
||||
|
||||
#import "KeyboardViewController.h"
|
||||
#import "Masonry.h"
|
||||
|
||||
@class AVAudioPlayer;
|
||||
@class CAGradientLayer;
|
||||
@class KBChatMessage;
|
||||
@class KBChatPanelView;
|
||||
@class KBFunctionView;
|
||||
@class KBKeyBoardMainView;
|
||||
@class KBKeyboardSubscriptionView;
|
||||
@class KBSettingView;
|
||||
@class KBSuggestionEngine;
|
||||
|
||||
@protocol KBChatLimitPopViewDelegate;
|
||||
@protocol KBChatPanelViewDelegate;
|
||||
@protocol KBFunctionViewDelegate;
|
||||
@protocol KBKeyBoardMainViewDelegate;
|
||||
@protocol KBKeyboardSubscriptionViewDelegate;
|
||||
|
||||
typedef NS_ENUM(NSInteger, KBKeyboardPanelMode) {
|
||||
KBKeyboardPanelModeMain = 0,
|
||||
KBKeyboardPanelModeFunction,
|
||||
KBKeyboardPanelModeChat,
|
||||
KBKeyboardPanelModeSettings,
|
||||
KBKeyboardPanelModeSubscription,
|
||||
};
|
||||
|
||||
@interface KeyboardViewController () <KBKeyBoardMainViewDelegate,
|
||||
KBFunctionViewDelegate,
|
||||
KBKeyboardSubscriptionViewDelegate,
|
||||
KBChatPanelViewDelegate,
|
||||
KBChatLimitPopViewDelegate>
|
||||
{
|
||||
UIButton *_nextKeyboardButton;
|
||||
UIView *_contentView;
|
||||
KBKeyBoardMainView *_keyBoardMainView;
|
||||
KBFunctionView *_functionView;
|
||||
KBSettingView *_settingView;
|
||||
UIImageView *_bgImageView;
|
||||
KBChatPanelView *_chatPanelView;
|
||||
KBKeyboardSubscriptionView *_subscriptionView;
|
||||
KBSuggestionEngine *_suggestionEngine;
|
||||
NSString *_currentWord;
|
||||
UIControl *_chatLimitMaskView;
|
||||
MASConstraint *_contentWidthConstraint;
|
||||
MASConstraint *_contentHeightConstraint;
|
||||
MASConstraint *_keyBoardMainHeightConstraint;
|
||||
MASConstraint *_chatPanelHeightConstraint;
|
||||
NSLayoutConstraint *_kb_heightConstraint;
|
||||
NSLayoutConstraint *_kb_widthConstraint;
|
||||
CGFloat _kb_lastPortraitWidth;
|
||||
CGFloat _kb_lastKeyboardHeight;
|
||||
UIImage *_kb_cachedGradientImage;
|
||||
CGSize _kb_cachedGradientSize;
|
||||
CAGradientLayer *_kb_defaultGradientLayer;
|
||||
NSString *_kb_lastAppliedThemeKey;
|
||||
NSMutableArray<KBChatMessage *> *_chatMessages;
|
||||
AVAudioPlayer *_chatAudioPlayer;
|
||||
BOOL _suppressSuggestions;
|
||||
BOOL _chatPanelVisible;
|
||||
NSString *_chatPanelBaselineText;
|
||||
id _kb_fullAccessObserverToken;
|
||||
id _kb_skinObserverToken;
|
||||
KBKeyboardPanelMode _kb_panelMode;
|
||||
}
|
||||
|
||||
@property(nonatomic, strong)
|
||||
UIButton *nextKeyboardButton; // 系统“下一个键盘”按钮(可选)
|
||||
@property(nonatomic, strong) UIView *contentView;
|
||||
@property(nonatomic, strong) KBKeyBoardMainView
|
||||
*keyBoardMainView; // 功能面板视图(点击工具栏第0个时显示)
|
||||
@property(nonatomic, strong)
|
||||
KBFunctionView *functionView; // 功能面板视图(点击工具栏第0个时显示)
|
||||
@property(nonatomic, strong) KBSettingView *settingView; // 设置页
|
||||
@property(nonatomic, strong) UIImageView *bgImageView; // 背景图(在底层)
|
||||
@property(nonatomic, strong) KBChatPanelView *chatPanelView;
|
||||
@property(nonatomic, strong) KBKeyboardSubscriptionView *subscriptionView;
|
||||
@property(nonatomic, strong) KBSuggestionEngine *suggestionEngine;
|
||||
@property(nonatomic, copy) NSString *currentWord;
|
||||
@property(nonatomic, assign) BOOL suppressSuggestions;
|
||||
@property(nonatomic, strong) UIControl *chatLimitMaskView;
|
||||
@property(nonatomic, strong) MASConstraint *contentWidthConstraint;
|
||||
@property(nonatomic, strong) MASConstraint *contentHeightConstraint;
|
||||
@property(nonatomic, strong) MASConstraint *keyBoardMainHeightConstraint;
|
||||
@property(nonatomic, strong) MASConstraint *chatPanelHeightConstraint;
|
||||
@property(nonatomic, strong) NSLayoutConstraint *kb_heightConstraint;
|
||||
@property(nonatomic, strong) NSLayoutConstraint *kb_widthConstraint;
|
||||
@property(nonatomic, assign) CGFloat kb_lastPortraitWidth;
|
||||
@property(nonatomic, assign) CGFloat kb_lastKeyboardHeight;
|
||||
@property(nonatomic, strong) UIImage *kb_cachedGradientImage;
|
||||
@property(nonatomic, assign) CGSize kb_cachedGradientSize;
|
||||
@property(nonatomic, strong, nullable) CAGradientLayer *kb_defaultGradientLayer;
|
||||
@property(nonatomic, copy, nullable) NSString *kb_lastAppliedThemeKey;
|
||||
@property(nonatomic, strong) NSMutableArray<KBChatMessage *> *chatMessages;
|
||||
@property(nonatomic, strong) AVAudioPlayer *chatAudioPlayer;
|
||||
@property(nonatomic, assign) BOOL chatPanelVisible;
|
||||
@property(nonatomic, copy) NSString *chatPanelBaselineText; // 打开聊天面板时宿主输入框已有的文本
|
||||
@property(nonatomic, strong, nullable) id kb_fullAccessObserverToken;
|
||||
@property(nonatomic, strong, nullable) id kb_skinObserverToken;
|
||||
@property(nonatomic, assign) KBKeyboardPanelMode kb_panelMode;
|
||||
|
||||
@end
|
||||
|
||||
@interface KeyboardViewController (KBPrivate)
|
||||
|
||||
// UI
|
||||
- (void)setupUI;
|
||||
- (nullable KBFunctionView *)kb_functionViewIfCreated;
|
||||
|
||||
// Panels
|
||||
- (void)showFunctionPanel:(BOOL)show;
|
||||
- (void)showSettingView:(BOOL)show;
|
||||
- (void)showChatPanel:(BOOL)show;
|
||||
- (void)showSubscriptionPanel;
|
||||
- (void)hideSubscriptionPanel;
|
||||
- (void)kb_setPanelMode:(KBKeyboardPanelMode)mode animated:(BOOL)animated;
|
||||
- (void)kb_ensureFunctionViewIfNeeded;
|
||||
- (void)kb_ensureChatPanelViewIfNeeded;
|
||||
- (void)kb_ensureKeyBoardMainViewIfNeeded;
|
||||
- (void)kb_releaseMemoryWhenKeyboardHidden;
|
||||
|
||||
// Suggestions
|
||||
- (void)kb_updateCurrentWordWithInsertedText:(NSString *)text;
|
||||
- (void)kb_clearCurrentWord;
|
||||
- (void)kb_scheduleContextRefreshResetSuppression:(BOOL)resetSuppression;
|
||||
- (void)kb_refreshCurrentWordFromDocumentContextResetSuppression:
|
||||
(BOOL)resetSuppression;
|
||||
- (void)kb_updateSuggestionsForCurrentWord;
|
||||
|
||||
// Chat
|
||||
- (void)kb_handleChatSendAction;
|
||||
|
||||
// Theme
|
||||
- (void)kb_applyTheme;
|
||||
- (void)kb_applyDefaultSkinIfNeeded;
|
||||
- (void)kb_consumePendingShopSkin;
|
||||
- (void)kb_registerDarwinSkinInstallObserver;
|
||||
- (void)kb_unregisterDarwinSkinInstallObserver;
|
||||
|
||||
// Layout
|
||||
- (CGFloat)kb_portraitWidth;
|
||||
- (CGFloat)kb_keyboardHeightForWidth:(CGFloat)width;
|
||||
- (CGFloat)kb_keyboardBaseHeightForWidth:(CGFloat)width;
|
||||
- (CGFloat)kb_chatPanelHeightForWidth:(CGFloat)width;
|
||||
- (void)kb_updateKeyboardLayoutIfNeeded;
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user