From 7b86b739ebbdaa0e848d9306437d4d72894ca848 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Tue, 9 Dec 2025 15:19:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86searchresult?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CustomKeyboard/View/KBFunctionView.m | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/CustomKeyboard/View/KBFunctionView.m b/CustomKeyboard/View/KBFunctionView.m index b30e46d..a386239 100644 --- a/CustomKeyboard/View/KBFunctionView.m +++ b/CustomKeyboard/View/KBFunctionView.m @@ -426,34 +426,46 @@ } - (NSString *)kb_formattedSearchResultString:(id)dataValue { + // data 不是数组就直接返回空串 if (![dataValue isKindOfClass:[NSArray class]]) { return @""; } NSArray *list = (NSArray *)dataValue; + NSMutableArray *segments = [NSMutableArray array]; + [list enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { NSString *payload = nil; + if ([obj isKindOfClass:[NSDictionary class]]) { id val = obj[@"payload"]; if ([val isKindOfClass:[NSString class]]) { payload = (NSString *)val; } } else if ([obj isKindOfClass:[NSString class]]) { + // 兼容后端直接给字符串数组的情况 payload = (NSString *)obj; } + payload = [payload stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if (payload.length > 0) { - NSString *line = [NSString stringWithFormat:@"%lu. %@", (unsigned long)(segments.count + 1), payload]; - [segments addObject:line]; + // 每一个 payload 就是一段 + [segments addObject:payload]; } }]; + if (segments.count == 0) { return @""; } - NSString *title = KBLocalized(@"Search result"); - NSMutableString *result = [NSMutableString stringWithFormat:@"\t%@:", title.length > 0 ? title : @"Search result"]; - for (NSString *line in segments) { - [result appendFormat:@"\t%@", line]; - } + + // 用 \t 拼起来,KBStreamTextView 会按 \t 拆成多个 label + NSMutableString *result = [NSMutableString string]; + + [segments enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + // 每段前面加一个 \t,保证是新的一段 + [result appendFormat:@"\t%@", obj]; + }]; + return result; } + - (NSString *)kb_pendingSplitSuffixForString:(NSString *)text { static NSString * const token = @""; if (text.length == 0) { return @""; }