реакция-родной-webview избегать клавиатуры (iOS) - PullRequest
0 голосов
/ 18 июня 2019

По моему опыту, реагировать на родную веб-версию было трудно вести себя так, как мне хочется, с клавиатурой на iOS.Он не меняет свою высоту автоматически, когда отображается клавиатура, а ее содержимое скрывается клавиатурой.

Он также ведет себя странным образом, завернутый в KeyboardAvoidingView .В моем случае кажется, что он слишком сильно корректирует содержимое WebView, примерно вдвое больше высоты клавиатуры.Такое же поведение появилось, когда я вручную прослушивал события открытия / закрытия клавиатуры и соответственно настраивал высоту WebView:

  componentDidMount(){
    Keyboard.addListener("keyboardWillShow", this.keyboardDidShow.bind(this));
    Keyboard.addListener("keyboardWillHide", this.keyboardDidHide.bind(this));
  }

  componentWillUnmount(){
    Keyboard.removeListener("keyboardWillShow", this.keyboardDidShow.bind(this));
    Keyboard.removeListener("keyboardWillHide", this.keyboardDidHide.bind(this));
  }

  keyboardDidShow(event){
    this.setState({
      keyboardHeight: event.endCoordinates.height
    });
  }

  keyboardDidHide(event){
    this.setState({
      keyboardHeight: 0
    });
  }

  render(){
    return (
      <WebView
        style={{flex: 1, maxHeight: Dimensions.get("window").height - this.state.keyboardHeight}}
      />
    );
  }

Я нашел решение, не оптимальное, но решение, тем не менее.Мой ответ опубликован ниже.

1 Ответ

0 голосов
/ 18 июня 2019

Поскольку я не мог найти никаких обсуждений по этому конкретному поведению и никаких решений, которые работали бы для меня, я пробирался через подпорки к документам о реакции на родную сеть. В конечном итоге у меня сработало в версии 0.59.9 React Native и версии 5.11.0 React Native WebView, как описано выше, вручную установив высоту WebView в прослушивателях событий клавиатуры и установив опору WebView useWebKit={false}.

К сожалению, это означает, что на нативной стороне WebView теперь используется UIWebView, который устарел и будет удален в будущем выпуске.

В любом случае, это то, чем я занимаюсь, и просто хотел поделиться своими выводами на случай, если кто-то окажется с той же проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...