fix(expo): 发送后延时 refocus 聊天输入框
发送会递增 inputResetKey 以 remount TextInput,需在下一帧再 focus 才能延续键盘输入。 Made-with: Cursor
This commit is contained in:
@@ -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(
|
const flattenedData = useMemo(
|
||||||
() => flattenMessagesForList(messages ?? []),
|
() => flattenMessagesForList(messages ?? []),
|
||||||
[messages],
|
[messages],
|
||||||
@@ -1366,6 +1377,7 @@ export default function ConversationScreen() {
|
|||||||
pendingTextSendRef.current = text;
|
pendingTextSendRef.current = text;
|
||||||
setInput('');
|
setInput('');
|
||||||
setInputResetKey((k) => k + 1);
|
setInputResetKey((k) => k + 1);
|
||||||
|
scheduleRefocusComposer();
|
||||||
clearConnectingSendTimeout();
|
clearConnectingSendTimeout();
|
||||||
connectingSendTimeoutRef.current = setTimeout(() => {
|
connectingSendTimeoutRef.current = setTimeout(() => {
|
||||||
connectingSendTimeoutRef.current = null;
|
connectingSendTimeoutRef.current = null;
|
||||||
@@ -1379,6 +1391,7 @@ export default function ConversationScreen() {
|
|||||||
sendText(text);
|
sendText(text);
|
||||||
setInput('');
|
setInput('');
|
||||||
setInputResetKey((k) => k + 1);
|
setInputResetKey((k) => k + 1);
|
||||||
|
scheduleRefocusComposer();
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 仅完全断开时禁用发送/语音;连接中可点发送(排队) */
|
/** 仅完全断开时禁用发送/语音;连接中可点发送(排队) */
|
||||||
|
|||||||
Reference in New Issue
Block a user