@@ -12,13 +12,13 @@ namespace UIElements
12
12
{
13
13
public class MobileInputAdaptivePage : VisualElement , IDisposable
14
14
{
15
+ private bool _isActivated ;
15
16
private float _parentHeight ;
16
17
private float _initialPaddingBottom ;
17
18
private float _defaultPaddingBottom ;
18
19
private float ? _paddingBottomWithKeyboard ;
19
20
private MobileInputDialogController _inputDialog ;
20
21
21
- private AsyncLazy _trackKeyboardActivityTask ;
22
22
private CancellationTokenSource _cancellationTokenSource ;
23
23
24
24
public MobileInputAdaptivePage ( )
@@ -29,14 +29,21 @@ public MobileInputAdaptivePage()
29
29
}
30
30
}
31
31
32
+ public bool IsActivated => _isActivated ;
32
33
public float OffsetFromKeyboardPx { get ; set ; }
33
- public bool IsActivated => _trackKeyboardActivityTask is { Task : { Status : UniTaskStatus . Pending } } ;
34
-
34
+
35
35
public async UniTask ActivateAsync ( )
36
36
{
37
+ if ( _isActivated )
38
+ {
39
+ return ;
40
+ }
41
+
42
+ _isActivated = true ;
43
+
37
44
if ( IsScreenKeyboardSupported ( ) )
38
45
{
39
- ActivateKeyboardTrackingAsync ( ) . Forget ( ) ;
46
+ TrackKeyboardActivityAsync ( ) . Forget ( ) ;
40
47
}
41
48
42
49
SetVisible ( true ) ;
@@ -48,6 +55,13 @@ public async UniTask ActivateAsync()
48
55
49
56
public async UniTask DeactivateAsync ( )
50
57
{
58
+ if ( _isActivated == false )
59
+ {
60
+ return ;
61
+ }
62
+
63
+ _isActivated = false ;
64
+
51
65
if ( IsScreenKeyboardSupported ( ) )
52
66
{
53
67
_inputDialog . HideScreenKeyboard ( ) ;
@@ -89,25 +103,15 @@ private void SetVisible(bool value) // TODO: Move to another place?
89
103
parent . visible = value ;
90
104
}
91
105
92
- private async UniTaskVoid ActivateKeyboardTrackingAsync ( )
93
- {
94
- if ( _trackKeyboardActivityTask ? . Task . Status . IsCompleted ( ) ?? true )
95
- {
96
- _trackKeyboardActivityTask = TrackKeyboardActivityAsync ( ) . ToAsyncLazy ( ) ;
97
- }
98
-
99
- await _trackKeyboardActivityTask ;
100
- }
101
-
102
- private async UniTask TrackKeyboardActivityAsync ( )
106
+ private async UniTaskVoid TrackKeyboardActivityAsync ( )
103
107
{
104
108
_cancellationTokenSource = new CancellationTokenSource ( ) ;
105
109
106
110
try
107
111
{
108
112
var cancellationToken = _cancellationTokenSource . Token ;
109
113
110
- while ( cancellationToken . IsCancellationRequested == false )
114
+ while ( _isActivated )
111
115
{
112
116
if ( TouchScreenKeyboard . visible == false )
113
117
{
0 commit comments