diff --git a/CustomKeyboard/KeyboardViewController.m b/CustomKeyboard/KeyboardViewController.m index fb04d13..be8711f 100644 --- a/CustomKeyboard/KeyboardViewController.m +++ b/CustomKeyboard/KeyboardViewController.m @@ -265,7 +265,7 @@ static void KBSkinInstallNotificationCallback(CFNotificationCenterRef center, case KBKeyTypeGlobe: [self advanceToNextInputMode]; break; case KBKeyTypeCustom: - // 点击自定义键(如“AI”)切换到功能面板 + // 点击自定义键切换到功能面板 [self showFunctionPanel:YES]; break; case KBKeyTypeModeChange: @@ -276,11 +276,15 @@ static void KBSkinInstallNotificationCallback(CFNotificationCenterRef center, } - (void)keyBoardMainView:(KBKeyBoardMainView *)keyBoardMainView didTapToolActionAtIndex:(NSInteger)index { - if (index != 0) { - [self showFunctionPanel:NO]; + if (index == 0) { + [self showSubscriptionPanel]; return; } - [self showSubscriptionPanel]; + if (index == 1) { + [self showFunctionPanel:YES]; + return; + } + [self showFunctionPanel:NO]; } - (void)keyBoardMainViewDidTapSettings:(KBKeyBoardMainView *)keyBoardMainView { diff --git a/CustomKeyboard/Model/KBKey.h b/CustomKeyboard/Model/KBKey.h index 39f8a6c..a50e044 100644 --- a/CustomKeyboard/Model/KBKey.h +++ b/CustomKeyboard/Model/KBKey.h @@ -16,7 +16,7 @@ typedef NS_ENUM(NSInteger, KBKeyType) { KBKeyTypeSpace, // 空格 KBKeyTypeReturn, // 回车/发送 KBKeyTypeGlobe, // 系统地球键 - KBKeyTypeCustom, // 自定义功能占位 AI + KBKeyTypeCustom, // 自定义功能占位(如 AI/Emoji) KBKeyTypeSymbolsToggle // 数字面板内的“#+=/123”切换 }; diff --git a/CustomKeyboard/View/KBKeyboardView.m b/CustomKeyboard/View/KBKeyboardView.m index 97a028e..060841c 100644 --- a/CustomKeyboard/View/KBKeyboardView.m +++ b/CustomKeyboard/View/KBKeyboardView.m @@ -277,10 +277,6 @@ static const CGFloat kKBLettersRow2EdgeSpacerMultiplier = 0.5; title:@"123" output:@"" type:KBKeyTypeModeChange]; - KBKey *customAI = [KBKey keyWithIdentifier:@"ai" - title:@"AI" - output:@"" - type:KBKeyTypeCustom]; KBKey *emoji = [KBKey keyWithIdentifier:KBKeyIdentifierEmojiPanel title:@"😊" output:@"" @@ -293,7 +289,7 @@ static const CGFloat kKBLettersRow2EdgeSpacerMultiplier = 0.5; title:KBLocalized(@"Send") output:@"\n" type:KBKeyTypeReturn]; - return @[ mode123, customAI, emoji, space, ret ]; + return @[ mode123, emoji, space, ret ]; } // 底部控制行(数字布局) @@ -302,10 +298,6 @@ static const CGFloat kKBLettersRow2EdgeSpacerMultiplier = 0.5; title:@"abc" output:@"" type:KBKeyTypeModeChange]; - KBKey *customAI = [KBKey keyWithIdentifier:@"ai" - title:@"AI" - output:@"" - type:KBKeyTypeCustom]; KBKey *emoji = [KBKey keyWithIdentifier:KBKeyIdentifierEmojiPanel title:@"😊" output:@"" @@ -318,7 +310,7 @@ static const CGFloat kKBLettersRow2EdgeSpacerMultiplier = 0.5; title:KBLocalized(@"Send") output:@"\n" type:KBKeyTypeReturn]; - return @[ modeABC, customAI, emoji, space, ret ]; + return @[ modeABC, emoji, space, ret ]; } #pragma mark - Row Building @@ -332,7 +324,7 @@ static const CGFloat kKBLettersRow2EdgeSpacerMultiplier = 0.5; edgeSpacerMultiplier:(CGFloat)edgeSpacerMultiplier { // 第 4 行(底部控制行)使用单独的布局规则: - // 123/ABC、AI、Send 给定尺寸,Space 自动吃掉剩余宽度。 + // 123/ABC、Emoji、Send 给定尺寸,Space 自动吃掉剩余宽度。 BOOL isBottomControlRow = [self kb_isBottomControlRowWithKeys:keys]; CGFloat spacing = 0; // 键与键之间的间距 @@ -419,7 +411,7 @@ edgeSpacerMultiplier:(CGFloat)edgeSpacerMultiplier { }]; } - // 底部控制行:在第一轮已完成左右约束的前提下,仅给 123/ABC、AI、Send 指定宽度, + // 底部控制行:在第一轮已完成左右约束的前提下,仅给 123/ABC、Emoji、Send 指定宽度, // Space 不加宽度约束,让其自动填充剩余空间。 if (isBottomControlRow) { [self kb_applyBottomControlRowWidthInRow:row]; @@ -448,7 +440,7 @@ edgeSpacerMultiplier:(CGFloat)edgeSpacerMultiplier { } } if (firstChar) { - // 如果该行本身没有字符键(如底部控制行),且基准按钮是 123/ABC/AI/#+= 等, + // 如果该行本身没有字符键(如底部控制行),且基准按钮是 123/ABC/#+= 等, // 也将其约束为 1:1,避免 123/ABC 不是正方形。 if (!hasCharacterInRow && (firstChar.key.type == KBKeyTypeModeChange || @@ -540,7 +532,7 @@ edgeSpacerMultiplier:(CGFloat)edgeSpacerMultiplier { } // 为底部控制行设置宽度: -// - 123/ABC、AI:正方形(宽 = 行高 * multiplier) +// - 123/ABC、Emoji:正方形(宽 = 行高 * multiplier) // - Send:宽 = 模式键宽度的 2 倍 // - Space:不加宽度约束,依靠左右约束自动填充剩余空间。 - (void)kb_applyBottomControlRowWidthInRow:(UIView *)row { diff --git a/CustomKeyboard/View/KBToolBar.h b/CustomKeyboard/View/KBToolBar.h index 5813fad..6bf7fe1 100644 --- a/CustomKeyboard/View/KBToolBar.h +++ b/CustomKeyboard/View/KBToolBar.h @@ -13,7 +13,7 @@ NS_ASSUME_NONNULL_BEGIN @protocol KBToolBarDelegate @optional -/// 左侧 4 个功能按钮点击(index: 0~3) +/// 左侧功能按钮点击(index 从 0 开始) - (void)toolBar:(KBToolBar *)toolBar didTapActionAtIndex:(NSInteger)index; /// 右侧设置按钮点击 - (void)toolBarDidTapSettings:(KBToolBar *)toolBar; @@ -21,12 +21,12 @@ NS_ASSUME_NONNULL_BEGIN - (void)toolBarDidTapUndo:(KBToolBar *)toolBar; @end -/// 顶部工具栏:左侧 4 个按钮,右侧 1 个设置按钮。 +/// 顶部工具栏:左侧按钮数量可变,右侧为设置/撤销等功能区。 @interface KBToolBar : UIView @property (nonatomic, weak, nullable) id delegate; -/// 左侧 4 个按钮的标题。默认值:@[@"Item1", @"Item2", @"Item3", @"Item4"]。 +/// 左侧按钮的标题(数量由数组决定)。默认值:@[@"Recharge Now", @"AI"]。 @property (nonatomic, copy) NSArray *leftButtonTitles; /// 暴露按钮以便外部定制(只读;首次访问时懒加载创建) diff --git a/CustomKeyboard/View/KBToolBar.m b/CustomKeyboard/View/KBToolBar.m index d27500d..3837c3b 100644 --- a/CustomKeyboard/View/KBToolBar.m +++ b/CustomKeyboard/View/KBToolBar.m @@ -24,7 +24,7 @@ - (instancetype)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) { self.backgroundColor = [UIColor clearColor]; - _leftButtonTitles = @[KBLocalized(@"Recharge Now")]; // 默认标题 + _leftButtonTitles = @[KBLocalized(@"Recharge Now"), @"AI"]; // 默认标题 [self setupUI]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(kb_undoStateChanged)