fix(expo): 发送后延时 refocus 聊天输入框

发送会递增 inputResetKey 以 remount TextInput,需在下一帧再 focus 才能延续键盘输入。

Made-with: Cursor
This commit is contained in:
Kevin
2026-04-29 10:37:49 +08:00
parent 80833f7033
commit eddb2c3078

View File

@@ -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();
};
/** 仅完全断开时禁用发送/语音;连接中可点发送(排队) */