【发布时间】:2017-01-29 11:22:18
【问题描述】:
已解决:
import { Component, ViewChild} from '@angular/core';
import { Keyboard } from 'ionic-native';
@Component({
templateUrl: 'build/pages/home/home.html'
})
export class HomePage {
@ViewChild('input') myInput ;
constructor() {}
ionViewDidLoad() {
setTimeout(() => {
Keyboard.show() // for android
this.myInput.setFocus();
},150);
}
}
1) 导入“ViewChild”
import {Component, ViewChild} from '@angular/core';
2) 在您的 html 模板中创建对您的输入的引用:
<ion-input #focusInput></ion-input>
3) 使用@ViewChild 访问您刚才引用的输入组件。
@ViewChild('focusInput') myInput ;
4) 触发焦点
每次加载视图/页面时使用 ionViewLoaded() 方法触发它。
需要setTimeout
ionViewLoaded() {
setTimeout(() => {
Keyboard.show() // for android
this.myInput.setFocus();
},150); //a least 150ms.
}
4) 在 Android 上显示键盘
import { Keyboard } from 'ionic-native';
调用 Keyboard.show() 在 Android 上调用键盘。
5) 在 iOS 上显示键盘
将此行添加到您的 config.xml 以使其在 iOS 上运行:
<preference name="KeyboardDisplayRequiresUserAction" value="false" />
在 mhartington 伟大文章的帮助下:http://mhartington.io/post/setting-input-focus/
【问题讨论】:
-
它在 iOS 中不起作用 :(
-
ionViewLoaded()对我不起作用,我不得不使用ionViewDidLoad() -
另外,如果您使用
ionic serve进行测试,我相信会看到类似“Native:尝试调用 Keyboard.show,但 Cordova 不可用”的内容。确保在控制台中包含 cordova.js 或在设备/模拟器中运行意味着它可以工作。 -
当我这样做时,我得到“ngc:错误:无法分配给引用或变量!”建设时
-
您可以使用“发布您的答案”按钮将问题转换为新答案吗?将答案放在问题主体中令人困惑,当我发现您的问题时,我无法理解答案在哪里。将新的答案标记为正确后,它将帮助人们更好地指导自己:)
标签: input focus ionic2 setfocus autofocus