Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sxychenjing
engine
提交
9a0b553c
E
engine
项目概览
sxychenjing
/
engine
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
engine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
9a0b553c
编写于
4月 13, 2021
作者:
W
Wu Zhong
提交者:
GitHub
4月 12, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[iOS] Fixes crash of TextInputView when Flutter deallocated (#25070)
上级
8c112c61
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
40 addition
and
3 deletion
+40
-3
shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm
...orm/darwin/ios/framework/Source/FlutterTextInputPlugin.mm
+28
-3
shell/platform/darwin/ios/framework/Source/FlutterTextInputPluginTest.m
.../darwin/ios/framework/Source/FlutterTextInputPluginTest.m
+12
-0
未找到文件。
shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm
浏览文件 @
9a0b553c
...
...
@@ -1234,6 +1234,30 @@ static FlutterAutofillType autofillTypeOf(NSDictionary* configuration) {
@end
@interface
FlutterTextInputPlugin
()
-
(
void
)
enableActiveViewAccessibility
;
@end
@interface
FlutterTimerProxy
:
NSObject
@property
(
nonatomic
,
assign
)
FlutterTextInputPlugin
*
target
;
@end
@implementation
FlutterTimerProxy
+
(
instancetype
)
proxyWithTarget
:(
FlutterTextInputPlugin
*
)
target
{
FlutterTimerProxy
*
proxy
=
[[
self
new
]
autorelease
];
if
(
proxy
)
{
proxy
.
target
=
target
;
}
return
proxy
;
}
-
(
void
)
enableActiveViewAccessibility
{
[
self
.
target
enableActiveViewAccessibility
];
}
@end
@interface
FlutterTextInputPlugin
()
@property
(
nonatomic
,
strong
)
FlutterTextInputView
*
reusableInputView
;
...
...
@@ -1266,6 +1290,7 @@ static FlutterAutofillType autofillTypeOf(NSDictionary* configuration) {
-
(
void
)
dealloc
{
[
self
hideTextInput
];
_activeView
.
textInputDelegate
=
nil
;
[
_reusableInputView
release
];
[
_activeView
release
];
[
_inputHider
release
];
...
...
@@ -1344,15 +1369,15 @@ static FlutterAutofillType autofillTypeOf(NSDictionary* configuration) {
if
(
!
_enableFlutterTextInputViewAccessibilityTimer
)
{
_enableFlutterTextInputViewAccessibilityTimer
=
[[
NSTimer
scheduledTimerWithTimeInterval
:
kUITextInputAccessibilityEnablingDelaySeconds
target:
self
selector:
@selector
(
enableActiveViewAccessibility
:
)
target:
[
FlutterTimerProxy
proxyWithTarget
:
self
]
selector:
@selector
(
enableActiveViewAccessibility
)
userInfo:
nil
repeats:
NO
]
retain
];
}
[
_activeView
becomeFirstResponder
];
}
-
(
void
)
enableActiveViewAccessibility
:(
NSTimer
*
)
time
{
-
(
void
)
enableActiveViewAccessibility
{
if
(
_activeView
.
isFirstResponder
)
{
_activeView
.
accessibilityEnabled
=
YES
;
}
...
...
shell/platform/darwin/ios/framework/Source/FlutterTextInputPluginTest.m
浏览文件 @
9a0b553c
...
...
@@ -240,6 +240,18 @@ FLUTTER_ASSERT_ARC
XCTAssert
([[
passwordView
.
textField
description
]
containsString
:
@"TextField"
]);
}
-
(
void
)
testInputViewCrash
{
FlutterTextInputView
*
activeView
=
nil
;
@autoreleasepool
{
FlutterTextInputPlugin
*
inputPlugin
=
[
FlutterTextInputPlugin
new
];
activeView
=
inputPlugin
.
activeView
;
FlutterEngine
*
flutterEngine
=
[[
FlutterEngine
alloc
]
init
];
activeView
.
textInputDelegate
=
(
id
<
FlutterTextInputDelegate
>
)
flutterEngine
;
}
XCTAssert
(
!
activeView
.
textInputDelegate
);
[
activeView
updateEditingState
];
}
-
(
void
)
ensureOnlyActiveViewCanBecomeFirstResponder
{
for
(
FlutterTextInputView
*
inputView
in
self
.
installedInputViews
)
{
XCTAssertEqual
(
inputView
.
canBecomeFirstResponder
,
inputView
==
textInputPlugin
.
activeView
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录