TextInput的 onContentSizeChange 中的contentSize属性一直是固定值 HarmonyOS 鸿蒙Next

发布于 1周前 作者 h691938207 最后一次编辑是 5天前 来自 鸿蒙OS

TextInput的 onContentSizeChange 中的contentSize属性一直是固定值 HarmonyOS 鸿蒙Next

DevEco Studio版本:(如:DevEco Studio 5.0.3.600) SDK:HarmonyOS NEXT Developer Beta3 SDK, based on OpenHarmony SDK Ohos_sdk_public 5.0.0.36 (API Version 12 Beta3) 三方库版本:react-native": "0.72.5

操作步骤:

<TextInput
style={styles.input}
underlineColorAndroid={‘transparent’}
placeholder={placeholder}
textAlignVertical=“top”
multiline={true}
onContentSizeChange={this.onContentSizeChange}
value={this.filterText(text)}
ref={(ref) => {
this.textInputRef = ref
}}
onChangeText={this.onChangeText}
onEndEditing={this.onChangeTextEnd}
/>

onContentSizeChange = (event) => { const { height } = event.nativeEvent?.contentSize || {} //打印出来一直是固定值
}


更多关于TextInput的 onContentSizeChange 中的contentSize属性一直是固定值 HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
onContentSizeChange 是当 TextInput 组件的字符行数变化时触发该事件的,所以当输入完一行后,换行到下一行后可以获取到下一行的高度,这边通过打印是可以获取每一行的高度的,demo如下:
深色代码主题
复制
import { TextInput,StyleSheet, } from 'react-native';
const ExampleComponent = () => {
  const [text, onChangeText] = React.useState('');
  const onContentSizeChange = (event) => {
    const  {height}  = event.nativeEvent?.contentSize || {}
   //打印出来一直是固定值
   console.log(height);
  }
  return (
    <TextInput
    style={styles.input}
    underlineColorAndroid={'transparent'}
    placeholder={'placeholder'}
    textAlignVertical="top"
    multiline={true}
    onContentSizeChange={onContentSizeChange}
    // value={this.filterText(text)}
    // ref={(ref) => {
    //   this.textInputRef = ref
    // }}
    // onChangeText={onChangeText1}
    // onEndEditing={this.onChangeTextEnd}
  />
  );
};
const styles = StyleSheet.create({
  input: {
  height: 100,
  margin: 40,
  borderWidth: 1,
  padding: 10,
  },
  });
export default ExampleComponent;

更多关于TextInput的 onContentSizeChange 中的contentSize属性一直是固定值 HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,TextInput组件的onContentSizeChange回调中的contentSize属性通常用于获取文本内容的大小变化。如果你发现contentSize属性一直是固定值,这可能是由于以下几种原因:

  1. 文本内容未变化:如果输入的文本内容没有变化,contentSize可能不会更新。确保在输入过程中有实际的内容变更。

  2. 布局约束TextInput的父布局可能对其大小进行了限制,导致contentSize无法正确反映内容大小。检查父布局的约束条件,确保没有固定大小或比例限制。

  3. 样式和字体影响:字体大小、行高等样式属性会影响文本内容的大小计算。确认这些样式属性在回调触发前后没有变化。

  4. 组件版本或系统问题:确保你使用的HarmonyOS SDK版本支持动态更新contentSize。某些早期版本可能存在BUG或不支持该功能。

  5. 回调实现问题:检查onContentSizeChange回调的实现,确保逻辑正确且没有被其他代码覆盖或修改。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部