处理为识别到语音

This commit is contained in:
2026-02-02 17:41:23 +08:00
parent 2b75ad90fb
commit 0416a64235
5 changed files with 59 additions and 1 deletions

View File

@@ -60,6 +60,9 @@ NS_ASSUME_NONNULL_BEGIN
/// 移除 loading AI 消息
- (void)removeLoadingAssistantMessage;
/// 移除 loading 用户消息
- (void)removeLoadingUserMessage;
/// 滚动到底部
- (void)scrollToBottom;

View File

@@ -401,6 +401,32 @@ static inline CGFloat KBChatAbsTimeInterval(NSTimeInterval interval) {
}
}
- (void)removeLoadingUserMessage {
if (self.inverted) {
for (NSInteger i = 0; i < self.messages.count; i++) {
KBAiChatMessage *message = self.messages[i];
if (message.type == KBAiChatMessageTypeUser && message.isLoading) {
[self.messages removeObjectAtIndex:i];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
NSLog(@"[KBChatTableView] 移除 loading 用户消息,索引: %ld", (long)i);
break;
}
}
} else {
for (NSInteger i = self.messages.count - 1; i >= 0; i--) {
KBAiChatMessage *message = self.messages[i];
if (message.type == KBAiChatMessageTypeUser && message.isLoading) {
[self.messages removeObjectAtIndex:i];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
NSLog(@"[KBChatTableView] 移除 loading 用户消息,索引: %ld", (long)i);
break;
}
}
}
}
- (void)scrollToBottom {
[self scrollToBottomAnimated:YES];
}

View File

@@ -36,6 +36,9 @@ NS_ASSUME_NONNULL_BEGIN
/// 更新最后一条用户消息
- (void)updateLastUserMessage:(NSString *)text;
/// 移除 loading 用户消息
- (void)removeLoadingUserMessage;
/// 添加 AI 消息(支持打字机效果)
- (void)appendAssistantMessage:(NSString *)text
audioId:(nullable NSString *)audioId;

View File

@@ -637,6 +637,32 @@ static NSString * const KBChatSessionDidResetNotification = @"KBChatSessionDidRe
}
}
- (void)removeLoadingUserMessage {
if (!self.messages) {
return;
}
if (self.chatView.inverted) {
for (NSInteger i = 0; i < self.messages.count; i++) {
KBAiChatMessage *message = self.messages[i];
if (message.type == KBAiChatMessageTypeUser && message.isLoading) {
[self.messages removeObjectAtIndex:i];
break;
}
}
} else {
for (NSInteger i = self.messages.count - 1; i >= 0; i--) {
KBAiChatMessage *message = self.messages[i];
if (message.type == KBAiChatMessageTypeUser && message.isLoading) {
[self.messages removeObjectAtIndex:i];
break;
}
}
}
[self.chatView removeLoadingUserMessage];
}
- (void)markLastUserMessageLoadingComplete {
[self.chatView markLastUserMessageLoadingComplete];