首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移动端键盘重叠输入

移动端键盘重叠输入
EN

Stack Overflow用户
提问于 2017-04-14 23:45:27
回答 2查看 1.1K关注 0票数 3

我正在开发一个带有angular-meteor的应用程序,每次我聚焦屏幕底部的输入时,键盘都会与之重叠。

我尝试将其添加到我的mobile-config.js中,但不起作用:

代码语言:javascript
复制
App.setPreference('fullscreen', false);
App.setPreference('android-windowSoftInputMode', 'adjustResize');

还有我的index.html上的这个元数据:

代码语言:javascript
复制
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, target-densitydpi=device-dpi, width=device-width" />

我是不是忘了什么?

EN

回答 2

Stack Overflow用户

发布于 2017-04-15 03:37:34

所以安卓系统有两个选择(iOS对你来说处理得更好一些)。在AndroidManifest.xml文件中,您将在第一个<activity>标记中看到android:windowSoftInputMode。这将调整键盘与屏幕的交互方式。Here是关于它如何工作的更多信息。

票数 1
EN

Stack Overflow用户

发布于 2017-12-28 02:29:17

这对我来说几乎适用于所有情况。

此代码位于以下路径下:

代码语言:javascript
复制
── client
   ├── main.js

// Global variables 
let keyboardHeight = 0, originalHeight = 0;

Meteor.startup(() => {
    if(Meteor.isCordova){
        StatusBar.hide();

        // ionic plugin defaults to hide it
        cordova.plugins.Keyboard.hideKeyboardAccessoryBar(false);

        // Android specific events
        isAndroid = cordova.platformId == 'android';
        if(isAndroid){
            // Handle android backbutton
            document.addEventListener("backbutton", onBackButtonDown, false);

            // Using ionic-plugin-keyboard
            window.addEventListener("native.keyboardshow", onShowKeyboard, false);
            window.addEventListener("native.keyboardhide", onHideKeyboard, false);
        }
    }
};
onShowKeyboard = function(e){
    let elem = document.activeElement,      // Get the focused element
        $parent = $(elem).scrollParent();   // Get closest scrollable ancestor (jQuery UI)

    // If there is no scrollable parent, no need to continue processing
    if($parent.length == 0){
        return;
    }

    // Check if the keyborad type has changed (i.e. from text to number)
    if(keyboardHeight != e.keyboardHeight){
        keyboardHeight = e.keyboardHeight;
    }

    // Don't resize if the original height hasn't been reset by onHideKeyboard()
    if(originalHeight == 0){
        originalHeight = $parent.height();
    }

    // Subtract keyboard height from parent height + accessory bar height
    // Add some class to the parent, to be able to get it back to normal state onHideKeyboard()
    $parent.height(originalHeight - keyboardHeight + 50).addClass('adjusted');

    // Give the keyboard time to show
    setTimeout(function() {     
        // Scroll to active element
        document.activeElement.scrollIntoView({
            behavior: "smooth", // or "auto" or "instant"
            block: "center"     // or "start" or "end"
        });
    }, 100);

    // Unbind DOM object from HTML for garbage collection
    elem = null;
    $parent.prevObject = null; // To avoid memory leak (for any jQuery DOM object)
    $parent = null;
};
onHideKeyboard = function(e){
    let s = $('.adjusted').attr('style');
    s = s.replace(/height.*;/, '');
    $('.adjusted').attr('style', s).removeClass('adjusted');
    keyboardHeight = 0;
    originalHeight = 0;
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43414869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档