Программируем под IOS
Anonymous
Как позволить uiview обращаться с жестом для Tap, а затем жест TAP передан вниз к другому Uiview, лежащему внизу?
Сообщение
Anonymous » 25 июл 2025, 05:53
В документации говорится, что установлен: < /p>
Код: Выделить всё
recognizer.cancelsTouchesInVew = NO;
< /code>
и добавить распознаватель в верхний вид. < /p>
Я попробовал, и он не работает.UIView *custom_overlay_1 = [[UIView alloc] initWithFrame : given_frame];
UIView *custom_overlay_2 = [[UIView alloc] initWithFrame : given_frame];
UITapGestureRecognizer *custom_recognizer_1, *custom_recognizer_2;
custom_recognizer_1 = [[UITapGestureRecognizer alloc]
initWithTarget : self
action :@selector(handle_tap_1:)];
custom_recognizer_2 = [[UITapGestureRecognizer alloc]
initWithTarget : self
action :@selector(handle_tap_2:)];
[custom_recognizer_1 setCancelsTouchesInView: NO];
[custom_recognizer_2 setCancelsTouchesInView: NO];
[custom_overlay_1 addGestureRecognizer: custom_recognizer_1];
[custom_overlay_2 addGestureRecognizer: custom_recognizer_2];
[self.view addSubview custom_overlay_2];
[self.view addSubview custom_overlay_1];
- (int) handle_tap_1 : (UITapGestureRecognizer *) gesture
{
NSLog(@" *** *** handle_tap_1 !!!");
if (gesture.state == UIGestureRecognizerStateRecognized)
NSLog(@" *** *** recognized tap detected in handle_tap_1 !!!");
return (0);
}
- (int) handle_tap_2 : (UITapGestureRecognizer *) gesture
{
NSLog(@" *** *** handle_tap_2 !!!");
if (gesture.state == UIGestureRecognizerStateRecognized)
NSLog(@" *** *** recognized tap detected in handle_tap_2 !!!");
return (0);
}
Проблема custom_overlay_1 может поймать жест Tap, но custom_overlay_2 нет.
Подробнее здесь:
https://stackoverflow.com/questions/797 ... sed-down-t
1753412038
Anonymous
В документации говорится, что установлен: < /p> [code]recognizer.cancelsTouchesInVew = NO; < /code> и добавить распознаватель в верхний вид. < /p> Я попробовал, и он не работает.UIView *custom_overlay_1 = [[UIView alloc] initWithFrame : given_frame]; UIView *custom_overlay_2 = [[UIView alloc] initWithFrame : given_frame]; UITapGestureRecognizer *custom_recognizer_1, *custom_recognizer_2; custom_recognizer_1 = [[UITapGestureRecognizer alloc] initWithTarget : self action :@selector(handle_tap_1:)]; custom_recognizer_2 = [[UITapGestureRecognizer alloc] initWithTarget : self action :@selector(handle_tap_2:)]; [custom_recognizer_1 setCancelsTouchesInView: NO]; [custom_recognizer_2 setCancelsTouchesInView: NO]; [custom_overlay_1 addGestureRecognizer: custom_recognizer_1]; [custom_overlay_2 addGestureRecognizer: custom_recognizer_2]; [self.view addSubview custom_overlay_2]; [self.view addSubview custom_overlay_1]; - (int) handle_tap_1 : (UITapGestureRecognizer *) gesture { NSLog(@" *** *** handle_tap_1 !!!"); if (gesture.state == UIGestureRecognizerStateRecognized) NSLog(@" *** *** recognized tap detected in handle_tap_1 !!!"); return (0); } - (int) handle_tap_2 : (UITapGestureRecognizer *) gesture { NSLog(@" *** *** handle_tap_2 !!!"); if (gesture.state == UIGestureRecognizerStateRecognized) NSLog(@" *** *** recognized tap detected in handle_tap_2 !!!"); return (0); } [/code] Проблема custom_overlay_1 может поймать жест Tap, но custom_overlay_2 нет. Подробнее здесь: [url]https://stackoverflow.com/questions/79709970/how-to-let-a-uiview-handle-a-tap-gesture-then-have-the-tap-gesture-passed-down-t[/url]