RN TextInput输入汉字时跳动

ReactNative的TextInput组件在iOS中使用,输入汉字的时候字体忽大忽小,跳动特别厉害。本来以为是onChangeText引起的,经过测试发现并不是onChangeText惹的祸,而是输入汉字时setDefaultTextAttributes会被不停的调动,style里设置的字体大小和defaultTextAttributes里默认的字体大小不一样,输入汉字的时候字体忽大忽小,看起来字体像是在跳动。经过查阅资料,在GitHub找到了类似的问题,就这样把这个问题给解决了,解决方案如下。如果有需要GitHub原链接的可以留言。这个问题需要修改ReactNative源代码,要修改的文件名字是RCTUITextField.m,如图。

image

详细代码在下面,提供参考。setDefaultTextAttributes执行时,当参数是defaultTextAttributes默认的属性时,直接返回,不再改变字体样式,就避免了字体忽大忽小的问题。

- (void)setDefaultTextAttributes:(NSDictionary *)defaultTextAttributes
{
  if ([_defaultTextAttributes isEqualToDictionary:defaultTextAttributes]) {
      return;
  }
  _defaultTextAttributes = defaultTextAttributes;
  self.typingAttributes = defaultTextAttributes;
  [self _updatePlaceholder];
}


- (void)setDefaultTextAttributes:(NSDictionary *)defaultTextAttributes
{
  if ([_defaultTextAttributes isEqualToDictionary:defaultTextAttributes]) {
     return;
  }
  _defaultTextAttributes = defaultTextAttributes;
  [super setDefaultTextAttributes:defaultTextAttributes];
  [self _updatePlaceholder];
}

ReactNative开发过程中像这样的小问题还是挺多的,比如最容易出现的问题,就两个或多个组件之间不小心输入了一个空格,就会提示错误。 删除文件以及对该文件的引用后立即热加载,由于缓存问题,会提示文件找不到的错误......总之,耐下心来这些问题都是可以避免的。ReactNative页面布局确实比开发原生快了许多,特别是iOS原生,布局的时候很多地方都要动态计算组件的宽和高,要不然不能适配所有机型。ReactNative在各种组件齐全的情况下,这种开发效率是原生不能比的,也没有可比性的。

你可能感兴趣的:(RN TextInput输入汉字时跳动)