去掉标题键盘上移

This commit is contained in:
筱野
2025-10-10 21:57:09 +08:00
parent 687f685e28
commit 1140adf33e
5 changed files with 47 additions and 11 deletions

View File

@@ -75,7 +75,8 @@ const PublishBall: React.FC = () => {
const [formData, setFormData] = useState<PublishBallFormData[]>([defaultFormData])
const [checked, setChecked] = useState(true)
const [titleBar, setTitleBar] = useState('发布')
const scrollViewRef = useRef<any>(null)
// 控制是否响应全局键盘(由具体输入框 focus/blur 控制)
const [shouldReactToKeyboard, setShouldReactToKeyboard] = useState(false)
// 删除确认弹窗状态
const [deleteConfirm, setDeleteConfirm] = useState<{
@@ -580,7 +581,7 @@ useEffect(() => {
// 添加本地监听器
const removeListener = addListener((height, visible) => {
console.log('PublishBall 收到键盘变化:', height, visible)
// 这里只记录或用于其他逻辑,布局是否响应交由 shouldReactToKeyboard 决定
})
return () => {
@@ -588,10 +589,18 @@ useEffect(() => {
}
}, [initializeKeyboardListener, addListener])
console.log(isKeyboardVisible, 'isKeyboardVisible');
console.log(keyboardHeight, 'keyboardHeight');
const handleAnyInputFocus = (item: FormFieldConfig, e: any) => {
const { prop } = item
if (prop === 'title') {
return
}
setShouldReactToKeyboard(true)
}
const handleAnyInputBlur = (item: FormFieldConfig, e: any) => {
setShouldReactToKeyboard(false)
}
return (
<View className={`${styles['publish-ball-container']} ${isKeyboardVisible ? styles['publish-ball-container-keyboard'] : ''}`} style={{ bottom: isKeyboardVisible ? `${keyboardHeight - 124}px` : 0 }}>
<View className={`${styles['publish-ball-container']} ${isKeyboardVisible && shouldReactToKeyboard ? styles['publish-ball-container-keyboard'] : ''}`} style={{ bottom: isKeyboardVisible && shouldReactToKeyboard ? `${keyboardHeight - 124}px` : 0 }}>
<GeneralNavbar title={titleBar} backgroundColor="#FAFAFA" className={styles['publish-ball-navbar']} />
<View className={styles['publish-ball']} style={{ paddingTop: `${statusNavbarHeightInfo.totalHeight}px` }}>
{/* 活动类型切换 */}
@@ -636,6 +645,8 @@ useEffect(() => {
formData={item}
onChange={(key, value) => updateFormData(key, value, index)}
optionsConfig={optionsConfig}
onAnyInputFocus={handleAnyInputFocus}
onAnyInputBlur={handleAnyInputBlur}
/>
</View>
))