产品动态
公告
搜索入口 | 搜索结果 |
![]() | ![]() |
SearchBar 是搜索的入口组件,对外仅暴露了搜索组件的初始化方法,其他逻辑均封装在 SearchBar 中。方法名 | 参数 | 描述 |
init | onTapItem: @escaping (Any) -> Void | 点击搜索到的结果回调,包括好友、群组、消息、会话等搜索结果条目。 |
SearchBar 的搜索结果路由跳转如下:onTapItem: @escaping (Any) -> Void,需在回调中实现自定义跳转(例如跳转到您的自定义聊天界面)。// 初始化 SearchBarSearchBar(onTapItem: { result inhandleSearchResult(result)})// 响应搜索结果的点击事件// onConversationClick 是将事件抛给更上层,非必须。是否这样处理取决于开发者的项目层级。private func handleSearchResult(_ result: Any) {if let friendInfo = result as? FriendSearchInfo {// 解析出联系人结果点击信息let conversationID = ChatUtil.getC2CConversationID(friendInfo.userID)var conversation = ConversationInfo(conversationID: conversationID)conversation.type = .c2cconversation.title = friendInfo.friendRemark ?? friendInfo.userInfo.nicknameconversation.avatarURL = friendInfo.userInfo.avatarURL// 将事件抛到上层,由上层处理跳转单聊列表onConversationClick?(NavigationInfo(conversation: conversation))} else if let groupInfo = result as? GroupSearchInfo {// 解析出群组结果点击信息let conversationID = ChatUtil.getGroupConversationID(groupInfo.groupID)var conversation = ConversationInfo(conversationID: conversationID)conversation.type = .groupconversation.title = groupInfo.groupNameconversation.avatarURL = groupInfo.groupAvatarURL// 将事件抛到上层,由上层处理跳转群聊列表onConversationClick?(NavigationInfo(conversation: conversation))} else if let messageDict = result as? [String: Any],let messageInfo = messageDict["message"] as? MessageInfo,let conversationID = messageDict["conversationID"] as? String{// 解析出消息结果点击信息var conversation = ConversationInfo(conversationID: conversationID)if conversationID.hasPrefix("c2c_") {conversation.type = .c2c} else {conversation.type = .group}conversation.title = messageDict["conversationName"] as? Stringconversation.avatarURL = messageDict["conversationAvatar"] as? String// 将事件抛到上层,由上层处理跳转会话,且定位到指定消息onConversationClick?(NavigationInfo(conversation: conversation, locateMessage: messageInfo))} else if let conversationDict = result as? [String: Any],let conversationID = conversationDict["conversationID"] as? String{// 解析出会话结果点击信息var conversation = ConversationInfo(conversationID: conversationID)if conversationID.hasPrefix("c2c_") {conversation.type = .c2c} else {conversation.type = .group}conversation.title = conversationDict["conversationName"] as? Stringconversation.avatarURL = conversationDict["conversationAvatar"] as? String// 将事件抛到上层,由上层处理跳转会话onConversationClick?(NavigationInfo(conversation: conversation))}}
文档反馈