Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
yangkaifeng
uni-app
提交
4ef96c17
U
uni-app
项目概览
yangkaifeng
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
3
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4ef96c17
编写于
6月 28, 2021
作者:
Q
qiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: 解决 iOS 14.6 键盘弹出卡顿的问题 question/125870
上级
c23516a6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
31 addition
and
22 deletion
+31
-22
src/core/view/mixins/keyboard.js
src/core/view/mixins/keyboard.js
+31
-22
未找到文件。
src/core/view/mixins/keyboard.js
浏览文件 @
4ef96c17
...
...
@@ -3,6 +3,28 @@ import {
}
from
'
uni-shared
'
import
emitter
from
'
./emitter
'
let
resetTimer
let
isAndroid
let
osVersion
let
keyboardHeight
let
keyboardChangeCallback
let
webviewStyle
if
(
__PLATFORM__
===
'
app-plus
'
)
{
plusReady
(()
=>
{
isAndroid
=
plus
.
os
.
name
.
toLowerCase
()
===
'
android
'
osVersion
=
plus
.
os
.
version
// iOS 14.6 调用同步方法导致键盘弹卡顿
if
(
!
isAndroid
&&
parseFloat
(
osVersion
)
>=
14.6
)
{
const
currentWebview
=
plus
.
webview
.
currentWebview
()
webviewStyle
=
currentWebview
.
getStyle
()
||
{}
}
})
document
.
addEventListener
(
'
keyboardchange
'
,
function
(
event
)
{
keyboardHeight
=
event
.
height
keyboardChangeCallback
&&
keyboardChangeCallback
()
},
false
)
}
/**
* 保证iOS点击输入框外隐藏键盘
*/
...
...
@@ -14,7 +36,8 @@ function setSoftinputTemporary (vm, reset) {
const
MODE_ADJUSTPAN
=
'
adjustPan
'
const
MODE_NOTHING
=
'
nothing
'
const
currentWebview
=
plus
.
webview
.
currentWebview
()
const
style
=
currentWebview
.
getStyle
()
||
{}
// iOS 14.6 调用同步方法导致键盘弹卡顿
const
style
=
webviewStyle
||
currentWebview
.
getStyle
()
||
{}
const
options
=
{
mode
:
(
reset
||
style
.
softinputMode
===
MODE_ADJUSTRESIZE
)
?
MODE_ADJUSTRESIZE
:
(
vm
.
adjustPosition
?
MODE_ADJUSTPAN
:
MODE_NOTHING
),
position
:
{
...
...
@@ -63,22 +86,6 @@ function resetSoftinputNavBar (vm) {
}
}
let
resetTimer
let
isAndroid
let
osVersion
let
keyboardHeight
let
keyboardChangeCallback
if
(
__PLATFORM__
===
'
app-plus
'
)
{
plusReady
(()
=>
{
isAndroid
=
plus
.
os
.
name
.
toLowerCase
()
===
'
android
'
osVersion
=
plus
.
os
.
version
})
document
.
addEventListener
(
'
keyboardchange
'
,
function
(
event
)
{
keyboardHeight
=
event
.
height
keyboardChangeCallback
&&
keyboardChangeCallback
()
},
false
)
}
export
default
{
name
:
'
Keyboard
'
,
mixins
:
[
emitter
],
...
...
@@ -146,11 +153,13 @@ export default {
if
(
__PLATFORM__
===
'
app-plus
'
)
{
// 安卓单独隐藏键盘后点击输入框不会触发 focus 事件
el
.
addEventListener
(
'
click
'
,
()
=>
{
if
(
!
this
.
disabled
&&
focus
&&
keyboardHeight
===
0
)
{
setSoftinputTemporary
(
this
)
}
})
if
(
isAndroid
)
{
el
.
addEventListener
(
'
click
'
,
()
=>
{
if
(
!
this
.
disabled
&&
focus
&&
keyboardHeight
===
0
)
{
setSoftinputTemporary
(
this
)
}
})
}
if
(
!
isAndroid
&&
parseInt
(
osVersion
)
<
12
)
{
// iOS12 以下系统 focus 事件设置较迟,改在 touchstart 设置
el
.
addEventListener
(
'
touchstart
'
,
()
=>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录