相关疑难解决方法(0)

如何检查Android中软件键盘的可见性?

我需要做一个非常简单的事情 - 找出是否显示了软件键盘.这在Android中可行吗?

android visibility android-softkeyboard

502
推荐指数
9
解决办法
26万
查看次数

虚拟键盘处于活动状态时的屏幕样式

理想情况下,我希望整个界面都有一个自定义样式,可以在ios(itouch/ipad)上找到,或者在虚拟键盘存在的情况下等效.请参阅下面的更多细节.

当键盘"存在"时,自定义设置CSS黑客规则是活动的,也是可接受的解决方案.

在网站上定位机器人和ios(HTML/JavaScript/CSS)另请注意,内部布局为:"流畅".

编辑:这是更多的设计,然后是文字; 所以这些变化并没有让人迷失方向.在最低级别,我只想在有和没有虚拟键的情况下进行设计更改(也许只是背景更改).

这是一个好的或坏的设计理念的问题是有争议的.但是,我觉得这个问题无关紧要.对于这样的漏洞利用可以使用更多文本(例如游戏或交互式媒体).

因此,赏金:尽管不再需要我正在研究的项目的答案(使用了替代设计).我仍然相信这个问题可以从回答中受益.

默认行为

                       +--------+ 
                       |        |
+------------+       +-+-hidden-+-+   <- ~50% hidden
| +--------+ |       | +--------+ |
| |        | |       | |visible | |
| |        | |   \   | |        | |   <- ~50% visible
| |  100%  | |  ==>  | +--------+ |
| |        | |   /   | |virtual | |
| |        | |       | |  keys  | |
| +--------+ |       | +--------+ …
Run Code Online (Sandbox Code Playgroud)

javascript css mobile android ios

67
推荐指数
4
解决办法
7万
查看次数

检测虚拟键盘与硬件键盘

我一直在思考这个问题,我无法想办法解决这个问题.有没有办法检测用户是使用虚拟(软件)键盘还是传统(硬件)键盘?

新的Windows Surface在封面上有自己的键盘,对于Android/iPad,有大量不同的蓝牙键盘.

那么,你们中有人对此有任何意见吗?
我的目标是Android,IOS和Windows平板电脑/手机.


动机:(非常主观)

在开发平板电脑/智能手机的网络应用程序时,我已经认识到在许多情况下使用JavaScript键盘而不是操作系统的软件键盘会更容易.

假设您要输入PIN码.而不是让键盘填满屏幕的一半:

软件(OS)键盘:

|----------------|
|    [ input]    |
|                |
|----------------|
|  1  2  3  4  5 |
|  6  7  8  9  0 |
|----------------|
Run Code Online (Sandbox Code Playgroud)

JavaScript键盘:

|----------------|
|    [ input]    |
|    | 1 2 3|    |
|    | 4 5 6|    |
|    |_7_8_9|    |
|                |
|                |
|----------------|
Run Code Online (Sandbox Code Playgroud)

如果您需要处理大量输入,可能需要对输入进行叠加div并使用软件键盘:

|----------------|
| P1 P2    P3 P4 |
| [inp 1][inp 2] |
|----------------|
|    KEYBOARD    |
|                | …
Run Code Online (Sandbox Code Playgroud)

javascript keyboard jquery virtual tablet

34
推荐指数
2
解决办法
2万
查看次数

如何在Windows窗体应用程序中检测Windows 10何时进入平板电脑模式?

更新

虽然不是最优雅的解决方案,但似乎有效的一种方法是观察相关的注册表值.这是使用WMI执行此操作的示例.如果有更好的解决方案,我会很高兴听到任何人的意见.

using System;
using System.Management;
using System.Security.Principal;
using System.Windows.Forms;
using Microsoft.Win32;

public partial class MainForm : Form
{
    public MainForm()
    {
        this.InitializeComponent();
        this.UpdateModeFromRegistry();

        var currentUser = WindowsIdentity.GetCurrent();
        if (currentUser != null && currentUser.User != null)
        {
            var wqlEventQuery = new EventQuery(string.Format(@"SELECT * FROM RegistryValueChangeEvent WHERE Hive='HKEY_USERS' AND KeyPath='{0}\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ImmersiveShell' AND ValueName='TabletMode'", currentUser.User.Value));
            var managementEventWatcher = new ManagementEventWatcher(wqlEventQuery);
            managementEventWatcher.EventArrived += this.ManagementEventWatcher_EventArrived;
            managementEventWatcher.Start();
        }
    }

    private void ManagementEventWatcher_EventArrived(object sender, EventArrivedEventArgs e)
    {
        this.UpdateModeFromRegistry();
    }

    private void UpdateModeFromRegistry()
    {
        var tabletMode = (int)Registry.GetValue("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ImmersiveShell", …
Run Code Online (Sandbox Code Playgroud)

.net c# windows winforms windows-10

30
推荐指数
1
解决办法
1万
查看次数

检测android软键盘显示/隐藏事件

我试图在phonegap上检测showKeyboard和hidekeyboard事件.为此,在deviceready事件中我放置了以下代码:

  bindEvents: function() {
    document.addEventListener('deviceready', this.onDeviceReady, false);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicity call 'app.receivedEvent(...);'
onDeviceReady: function() {
    document.addEventListener("menubutton",app.onMenuKeyPress,false);
    document.addEventListener("backbutton",navigateBack,false);
    document.addEventListener("hidekeyboard", onKeyboardHide, false);
    document.addEventListener("showkeyboard", onKeyboardShow, false);
},
Run Code Online (Sandbox Code Playgroud)

这里后退按钮事件被解雇和罚款,但工作hidekeyboardshowkeyboard事件从未被触发.

为了检测它,我尝试使用window.onresize在浏览器中工作的事件.以下是其代码:

window.onresize = function(){
    var screenHeight = $(window).height();
    alert(screenHeight);
    var diff = screenInitialHeight - screenHeight;
    var newHeight = screenInitialHeight-diff;
    alert(newHeight);
    $('#mainpage').height(newHeight);
    $('#nav_container').height(newHeight);
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码也没有在show或hide键盘上执行.此功能仅在首次应用时执行.开始了.我在某些地方看到,对于某些人来说这些事件正在发挥作用,所以我觉得我身边有一些问题,可能是在一些配置文件等等.所以下面是androidmanifest.xml代码:

    <?xml version='1.0' encoding='utf-8'?> …
Run Code Online (Sandbox Code Playgroud)

javascript-events android-softkeyboard android-event cordova cordova-3

13
推荐指数
1
解决办法
2万
查看次数