ios端输入框遮挡问题很烦人 记录自己的解决办法
问题: 整体页面布局全都是flex 但是在ios中使用原生输入法显示正常 使用第三方输入法就会出现遮挡
解决:获取焦点添加 父元素 transform: translateY(0%);
原理:我不知道 developer.mozilla.org 我这里一直打不开 有空再补上好了
<div class='detail'>
<div class='message' #message [style.height.rem]='height'>
内容区域
</div>
<div class="input-box" #input>//输入框
<input type="text" class='input' [(ngModel)]='inputContent' (focus)='inputFocus()' (blur)='inputBlur()'>
<div class="btn">发送</div>
</div>
</div>
:host {
flex: 1;
}
.detail {
height: 100%;
display: flex;
flex-direction: column;
........
.input-box {
height: 1.3rem;
&.move {
-webkit-transform: translateY(0%);
transform: translateY(0%);
}
.input {
...
}
.btn {
....
}
}
}
}
/**
* 失去焦点 失去焦点添加样式
*/
inputBlur() {
if (Utils.isFromiOS()) {
console.log(222);
this.renderer.removeClass(this.input.nativeElement, 'move');
}
}
/**
* 获取焦点
*/
inputFocus() {
if (Utils.isFromiOS()) {
console.log(222);
this.renderer.addClass(this.input.nativeElement, 'move');
}
}
|