如何滚动焦点组件以查看在 React JS 中显示的屏幕键盘?

Posted

技术标签:

【中文标题】如何滚动焦点组件以查看在 React JS 中显示的屏幕键盘?【英文标题】:How to scroll focused component in to view on showing On-screen keyboard in React JS? 【发布时间】:2019-10-03 17:36:06 【问题描述】:

我已经得到了预期的行为。但并非总是如此。有时,焦点组件隐藏在屏幕键盘后面。我已经使用scrollIntoViewsetTimeout 修复了它。如果焦点组件没有自动向上滚动,这将有所帮助。

我的解决方案:

    class KeyboardAwayView extends Component 

    constructor(props) 
        super(props);
        this.dummyRef = React.createRef(); 
    

    render() 
        const Children = this.props.children;
        // Scroll to children component on focus
        const ClonedChildren = React.cloneElement(Children, 
            onFocus: () => 
                this.dummyRef.current.scrollIntoView( behavior: 'smooth' );
                setTimeout(() => 
                    if (this.dummyRef.current) 
                        this.dummyRef.current.scrollIntoView( behavior: 'smooth' );
                    
                , (this.props.interval | 500));
            
        );
        return (
            <div className="keyboard-away-container">
                ClonedChildren
                <div className="dummy" ref=this.dummyRef></div>
            </div>
        );
    

问题

    有什么可以改进我的解决方案的吗?

    有什么标准方法可以解决这个问题。在 React Native 中有一个 KeyboardAvoidingView。 ReactJS 中有类似的东西吗?

我已经经历过这个Is there any javascript event fired when the on-screen keyboard on mobile safari or chrome opens?。

【问题讨论】:

【参考方案1】:

问题:有什么标准方法可以解决这个问题。在 React Native 中有一个 KeyboardAvoidingView。 ReactJS 中有类似的东西吗?

不,没有标准方法在 React 中处理这个问题(我假设您指的是 react-dom)。

【讨论】:

以上是关于如何滚动焦点组件以查看在 React JS 中显示的屏幕键盘?的主要内容,如果未能解决你的问题,请参考以下文章

如何在React.js中显示模态滚动到顶部

在delphi的滚动框中滚动时如何查看组件是不是不在视图中?

单击焦点侧导航中的链接打开向下滚动的页面

在 React.js 中更新组件 onScroll 的样式

防止焦点 div 使用箭头键滚动

为啥我的 React 组件在 iframe 中的滚动高度为 150 像素?