diff --git a/app-expo/src/app/(main)/conversation/[id].tsx b/app-expo/src/app/(main)/conversation/[id].tsx index 6bee70e..0faea35 100644 --- a/app-expo/src/app/(main)/conversation/[id].tsx +++ b/app-expo/src/app/(main)/conversation/[id].tsx @@ -1219,6 +1219,17 @@ export default function ConversationScreen() { } }, []); + /** 发送后 `inputResetKey` 会 remount TextInput,需下一帧再 focus 才能延续键盘输入 */ + const scheduleRefocusComposer = useCallback(() => { + InteractionManager.runAfterInteractions(() => { + requestAnimationFrame(() => { + requestAnimationFrame(() => { + textInputRef.current?.focus(); + }); + }); + }); + }, []); + const flattenedData = useMemo( () => flattenMessagesForList(messages ?? []), [messages], @@ -1366,6 +1377,7 @@ export default function ConversationScreen() { pendingTextSendRef.current = text; setInput(''); setInputResetKey((k) => k + 1); + scheduleRefocusComposer(); clearConnectingSendTimeout(); connectingSendTimeoutRef.current = setTimeout(() => { connectingSendTimeoutRef.current = null; @@ -1379,6 +1391,7 @@ export default function ConversationScreen() { sendText(text); setInput(''); setInputResetKey((k) => k + 1); + scheduleRefocusComposer(); }; /** 仅完全断开时禁用发送/语音;连接中可点发送(排队) */