Angular+ionic2 控制键盘开启和关闭状态下的页面样式
问题描述:在手机端输入框获取焦点,键盘开启的状态会遮蔽输入框;
解决:键盘开启时,页面整体往上移动,关闭时再恢复原本样式。
步骤一:设置页面监听;
import { Component, ViewChild, ElementRef } from '@angular/core';
import { NavController, NavParams, IonicPage, ViewController, Content } from 'ionic-angular';
import { MsgBarService } from '../../../common/msg-bar';
import { UserService } from '../user.service';
import { Observable } from 'rxjs';
@IonicPage({
name: 'LoginIn',
segment: 'LoginIn'
})
@Component({
selector: 'page-login-in',
templateUrl: 'login-in.html',
})
export class LoginInPage {
userNum;
password;
height = 0;//通过该值记录键盘的状态
keyboardOpenCSS:boolean=false;//控制键盘开启和关闭时的样式
constructor(
public navCtrl: NavController,
public navParams: NavParams,
private msg: MsgBarService,
public viewCtrl: ViewController,
private service: UserService) {
}
ionViewDidLoad() {
Observable.fromEvent(window, 'resize').subscribe((event) => {
let _height = window.innerHeight;
if (this.height == 0) {
//初始化,键盘开启
this.keyboardOpenCSS=true;
this.height = _height;
} else if (_height > this.height) {
//键盘关闭
this.keyboardOpenCSS=false;
} else {
//键盘开启
this.keyboardOpenCSS=true;
}
})
}
userNameFun() {
if (!this.userNum) {
return;
}
if (isNaN(this.userNum)) {
//截掉非数值字符
this.userNum = this.userNum.substring(0, this.userNum.length - 1);
}
}
}
步骤二:html代码
<ion-header> <ion-navbar color="primary"> <ion-title>鸿翔移动应用</ion-title> </ion-navbar> </ion-header> <ion-content padding> <div [ngClass]="{keyboardOpenCSS: keyboardOpenCSS}"> <ion-list class="login_top"> <h1>云南鸿翔一心堂</h1> <p class="login_top_sys">移动业务系统</p> <p class="login_top_ver">v3.0</p> </ion-list> <ion-list> <ion-item> <ion-label>工号:</ion-label> <ion-input (keyup)="userNameFun()" type="text" placeholder="请输入7位工号" maxlength="7" [(ngModel)]="userNum"></ion-input>
</ion-item> <ion-item> <ion-label>密码:</ion-label> <ion-input type="password" placeholder="请输入登录密码" [(ngModel)]="password"></ion-input> </ion-item> </ion-list> <button ion-button full (click)="login()">登录</button>
<div class="footer">@Right 2018</div>
</div> </ion-content>
备注:
①<ion-input>的maxlength属性在类型为text下有效,在number或tel等数值类型下无效。
步骤三:CSS样式
.footer { position: fixed; bottom: 0px; height: 45px; width: 100px; line-height: 45px; text-align: center; left: 50%; margin-left: -50px; } .keyboardOpenCSS { margin-top: -190px; .footer { display: none; } }
以上。
【富潤屋,徳潤身】

浙公网安备 33010602011771号