@@ -134,6 +134,21 @@ Action<NSClickGestureRecognizer> CreateRecognizerHandler(WeakReference weakEvent
134
134
} ) ;
135
135
}
136
136
137
+ NSGestureProbe CreateTapRecognizerHandler ( WeakReference weakEventTracker , WeakReference weakRecognizer )
138
+ {
139
+ return new NSGestureProbe ( ( gesturerecognizer ) =>
140
+ {
141
+ var tapGestureRecognizer = weakRecognizer . Target as TapGestureRecognizer ;
142
+ var eventTracker = weakEventTracker . Target as EventTracker ;
143
+ var view = eventTracker ? . _renderer ? . Element as View ;
144
+
145
+ if ( tapGestureRecognizer != null && view != null )
146
+ tapGestureRecognizer . SendTapped ( view ) ;
147
+
148
+ return false ;
149
+ } ) ;
150
+ }
151
+
137
152
Action < NSClickGestureRecognizer > CreateChildRecognizerHandler ( WeakReference weakEventTracker , WeakReference weakRecognizer )
138
153
{
139
154
return new Action < NSClickGestureRecognizer > ( ( sender ) =>
@@ -149,7 +164,26 @@ Action<NSClickGestureRecognizer> CreateChildRecognizerHandler(WeakReference weak
149
164
if ( item == clickGestureRecognizer && view != null )
150
165
clickGestureRecognizer . SendClicked ( view , clickGestureRecognizer . Buttons ) ;
151
166
} ) ;
167
+ }
168
+
169
+ NSGestureProbe CreateChildTapRecognizerHandler ( WeakReference weakEventTracker , WeakReference weakRecognizer )
170
+ {
171
+ return new NSGestureProbe ( ( gesturerecognizer ) =>
172
+ {
173
+ var eventTracker = weakEventTracker . Target as EventTracker ;
174
+ var view = eventTracker ? . _renderer ? . Element as View ;
175
+ var childGestures = GetChildGestures ( gesturerecognizer , weakEventTracker , weakRecognizer , eventTracker , view ) ;
176
+
177
+ var tapGestureRecognizer = ( ( ChildGestureRecognizer ) weakRecognizer . Target ) . GestureRecognizer as TapGestureRecognizer ;
178
+ var nativeRecognizer = gesturerecognizer as NSClickGestureRecognizer ;
179
+ var recognizers = childGestures ? . GetChildGesturesFor < TapGestureRecognizer > ( x => x . NumberOfTapsRequired == ( int ) nativeRecognizer . NumberOfClicksRequired ) ;
152
180
181
+ foreach ( var item in recognizers )
182
+ if ( item == tapGestureRecognizer && view != null )
183
+ tapGestureRecognizer . SendTapped ( view ) ;
184
+
185
+ return false ;
186
+ } ) ;
153
187
}
154
188
#else
155
189
@@ -206,25 +240,13 @@ protected virtual NativeGestureRecognizer GetNativeRecognizer(IGestureRecognizer
206
240
if ( recognizer is ClickGestureRecognizer clickRecognizer )
207
241
{
208
242
var returnAction = CreateRecognizerHandler ( weakEventTracker , weakRecognizer , clickRecognizer ) ;
209
-
210
243
var uiRecognizer = CreateClickRecognizer ( ( int ) clickRecognizer . Buttons , clickRecognizer . NumberOfClicksRequired , returnAction ) ;
211
244
return uiRecognizer ;
212
245
}
213
246
214
247
if ( tapRecognizer != null )
215
248
{
216
- var returnAction = new NSGestureProbe ( ( gesturerecognizer ) =>
217
- {
218
- var tapGestureRecognizer = weakRecognizer . Target as TapGestureRecognizer ;
219
- var eventTracker = weakEventTracker . Target as EventTracker ;
220
- var view = eventTracker ? . _renderer ? . Element as View ;
221
-
222
- if ( tapGestureRecognizer != null && view != null )
223
- tapGestureRecognizer . SendTapped ( view ) ;
224
-
225
- return false ;
226
- } ) ;
227
-
249
+ var returnAction = CreateTapRecognizerHandler ( weakEventTracker , weakRecognizer ) ;
228
250
var uiRecognizer = CreateTapRecognizer ( tapRecognizer . NumberOfTapsRequired , returnAction ) ;
229
251
return uiRecognizer ;
230
252
}
@@ -263,6 +285,13 @@ protected virtual NativeGestureRecognizer GetNativeRecognizer(IGestureRecognizer
263
285
var uiRecognizer = CreateClickRecognizer ( ( int ) clickChildRecognizer . Buttons , clickChildRecognizer . NumberOfClicksRequired , returnAction ) ;
264
286
return uiRecognizer ;
265
287
}
288
+
289
+ if ( childRecognizer . GestureRecognizer is TapGestureRecognizer tapChildRecognizer )
290
+ {
291
+ var returnAction = CreateChildTapRecognizerHandler ( weakEventTracker , weakRecognizer ) ;
292
+ var uiRecognizer = CreateTapRecognizer ( tapChildRecognizer . NumberOfTapsRequired , returnAction ) ;
293
+ return uiRecognizer ;
294
+ }
266
295
#else
267
296
if ( childRecognizer . GestureRecognizer is TapGestureRecognizer tapChildRecognizer )
268
297
{
@@ -470,6 +499,7 @@ NSClickGestureRecognizer CreateTapRecognizer(int numTaps, NSGestureProbe action)
470
499
471
500
return result ;
472
501
}
502
+
473
503
#endif
474
504
475
505
static bool ShouldRecognizeTapsTogether ( NativeGestureRecognizer gesture , NativeGestureRecognizer other )
0 commit comments