Sencha Touch:如何以编程方式关注ios上的文本字段?

时间:2013-09-23 20:31:54

标签: javascript ios extjs sencha-touch sencha-touch-2

我正在尝试使用类似于在ios和android上找到的引脚登录,用户必须输入4位数的引脚才能继续。我遇到的问题是我希望选择输入并在用户进入页面后立即显示数字键盘,以便用户只需输入密码即可。

我检查了他们的文档,它显示文本字段是可聚焦的http://docs.sencha.com/touch/2.2.1/#!/api/Ext.field.Text-event-focus但人们一直遇到问题。

我正在使用sencha CMD编译我的代码并将其转换为Native App。焦点在Android设备上运行良好,但它不适用于ios设备。

以下是一个简单的概念证明:

Ext.application({
name : ('SF' || 'SenchaFiddle'),

launch : function() {
    Ext.create('Ext.Panel', {
        fullscreen : true,
        items:[
            {
                xtype: 'textfield',
                id: 'textfieldId'
            }, {
                xtype: 'button',
                text: 'click me to focus',
                handler: function () {
                    this.parent.down('#textfieldId').focus();
                }
            }
        ]
    });
}
});

3 个答案:

答案 0 :(得分:4)

iOS网页视图(自iOS 6开始)默认设置为阻止文本字段自动对焦,因为获得焦点也会显示键盘,显然会降低用户体验。有关详细信息,请参阅Apple's documentation。这会影响Safari以及本机应用程序中的Web视图。

如果您正在构建本机应用程序,则可以覆盖此行为。例如,如果您使用的是Cordova或PhoneGap,则可以在项目的MainViewController::webViewDidFinishLoad方法中覆盖此设置:

- (void)webViewDidFinishLoad:(UIWebView*)theWebView
{
    // Allow the keyboard to appear with Javascript focus events...
    theWebView.keyboardDisplayRequiresUserAction = false;

    return [super webViewDidFinishLoad:theWebView];
}

还有其他几个SO讨论涉及这个主题:

答案 1 :(得分:2)

我正在使用Touch 2.4,并且能够通过这种方式将字段集中在浏览器中:

xtype: 'textfield',
label: 'Test Example',
name: 'testField',
listeners: [
    {
        fn: function(element, eOpts) {
            element.down('input').dom.focus();
        },
        event: 'painted'
    }
]

我需要跟进部署到设备时的工作方式。

答案 2 :(得分:0)

试试这个......这里会出现一个文本框,其焦点是输入数字..

<tpl  if="ItemKey==this.getChecked(values.ItemKey)">
                       <input  style="color:green;display:block;width:50px;text-align:center;" type="text"
                       id="{ItemKey}"
                       onkeyup="MyApp.app.getController(\'Control\').TextboxKeyUp(this)"
                       value={[this.getScore(values.ItemKey)]}
                        onfocus="MyApp.app.getController(\'Control\').patTextFocus(this)" ><tpl else>