diff --git a/CustomKeyboard/KeyboardViewController.m b/CustomKeyboard/KeyboardViewController.m index 5b80484..a259cbb 100644 --- a/CustomKeyboard/KeyboardViewController.m +++ b/CustomKeyboard/KeyboardViewController.m @@ -122,7 +122,9 @@ static CGFloat KEYBOARDHEIGHT = 256 + 20; case KBKeyTypeGlobe: [self advanceToNextInputMode]; break; case KBKeyTypeCustom: - [self.textDocumentProxy insertText:@"[lang]"]; break; + // 点击自定义键(如“AI”)切换到功能面板 + [self showFunctionPanel:YES]; + break; case KBKeyTypeModeChange: case KBKeyTypeShift: // 这些已在 KBKeyBoardMainView/KBKeyboardView 内部处理 diff --git a/CustomKeyboard/View/KBKeyboardView.m b/CustomKeyboard/View/KBKeyboardView.m index b5617c4..3ab30ec 100644 --- a/CustomKeyboard/View/KBKeyboardView.m +++ b/CustomKeyboard/View/KBKeyboardView.m @@ -118,10 +118,9 @@ [KBKey keyWithTitle:@"⌫" type:KBKeyTypeBackspace] ]; } - NSArray *r4 = @[ [KBKey keyWithTitle:@"ABC" type:KBKeyTypeModeChange], - [KBKey keyWithTitle:@"," output:@","], + NSArray *r4 = @[ [KBKey keyWithTitle:@"abc" type:KBKeyTypeModeChange], + [KBKey keyWithTitle:@"AI" type:KBKeyTypeCustom], [KBKey keyWithTitle:@"space" type:KBKeyTypeSpace], - [KBKey keyWithTitle:@"中/英" type:KBKeyTypeCustom], [KBKey keyWithTitle:@"发送" type:KBKeyTypeReturn] ]; return @[r1, r2, r3, r4]; @@ -154,9 +153,8 @@ [row3 addObject:[KBKey keyWithTitle:@"⌫" type:KBKeyTypeBackspace]]; NSArray *row4 = @[ [KBKey keyWithTitle:@"123" type:KBKeyTypeModeChange], - [KBKey keyWithTitle:@"," output:@","], + [KBKey keyWithTitle:@"AI" type:KBKeyTypeCustom], [KBKey keyWithTitle:@"space" type:KBKeyTypeSpace], - [KBKey keyWithTitle:@"中/英" type:KBKeyTypeCustom], [KBKey keyWithTitle:@"发送" type:KBKeyTypeReturn] ]; return @[row1.copy, row2.copy, row3.copy, row4]; @@ -245,6 +243,10 @@ for (KBKeyButton *b in row.subviews) { if ([b isKindOfClass:[KBKeyButton class]] && b.key.type == KBKeyTypeCharacter) { firstChar = b; break; } } + // 若该行没有字符键(例如底部控制行),则使用行内第一个按钮作为基准宽度 + if (!firstChar) { + for (KBKeyButton *b in row.subviews) { if ([b isKindOfClass:[KBKeyButton class]]) { firstChar = b; break; } } + } if (firstChar) { for (KBKeyButton *b in row.subviews) { if (![b isKindOfClass:[KBKeyButton class]]) continue;