Контроллер модального представления iOS13 / iPadOS13 автоматизирует c свайп, чтобы отклонить вид перерыва, который фиксирует касание - PullRequest
2 голосов
/ 24 апреля 2020

Я нашел эту ветку, но она не отражает мою ситуацию: Отключить жест, чтобы развернуть модальную презентацию формы / листа страницы

У меня проблема: мое приложение открывает маленький вид Контроллер через модальное представление в формате форм. Представлен навигационный контроллер, который содержит stati c tableviewcontroller, внутри единственной ячейки, в которой у меня есть представление, которое захватывает сигнатуру с помощью "touchesBegan" и "touchesMoved".

Screenshot

Когда я пытаюсь нарисовать подпись, сенсор захватывает контроллер представления, который пытается отключиться.

Очевидно, я активировал свойство "modalInPresentation"

Как мне найти виновного в распознавании жестов?

self.view.gestureRecognizers He gives me these back, but nobody seems to intercept the gesture of dismiss:

<UIScrollViewDelayedTouchesBeganGestureRecognizer: 0x280ac8800; state = Possible; enabled = NO; delaysTouchesBegan = YES; view = <UITableView 0x10711a000>; target= <(action=delayed:, target=<UITableView 0x10711a000>)>>
<UIScrollViewPanGestureRecognizer: 0x105bfe170; state = Possible; enabled = NO; delaysTouchesEnded = NO; view = <UITableView 0x10711a000>; target= <(action=handlePan:, target=<UITableView 0x10711a000>)>>
<UIScrollViewKnobLongPressGestureRecognizer: 0x105b9b270; state = Possible; view = <UITableView 0x10711a000>; target= <(action=_handleKnobLongPressGesture:, target=<UITableView 0x10711a000>)>; numberOfTapsRequired = 0; minimumPressDuration = 0.1>
<UIScrollViewKnobLongPressGestureRecognizer: 0x105b9b440; state = Possible; view = <UITableView 0x10711a000>; target= <(action=_handleKnobLongPressGesture:, target=<UITableView 0x10711a000>)>; numberOfTapsRequired = 0>
<UIHoverGestureRecognizer: 0x112fb7f60; state = Possible; view = <UITableView 0x10711a000>; target= <(action=_handleKnobHoverGesture:, target=<UITableView 0x10711a000>)>>
<_UIDragAutoScrollGestureRecognizer: 0x28098ec10; state = Possible; cancelsTouchesInView = NO; delaysTouchesEnded = NO; view = <UITableView 0x10711a000>; target= <(action=_handleAutoScroll:, target=<UITableView 0x10711a000>)>>
<_UISwipeActionPanGestureRecognizer: 0x105be9d00; state = Possible; view = <UITableView 0x10711a000>; target= <(action=_swipeRecognizerDidRecognize:, target=<_UISwipeHandler 0x281896b00>)>>
<_UISwipeDismissalGestureRecognizer: 0x280ac8d00; state = Possible; enabled = NO; delaysTouchesBegan = YES; view = <UITableView 0x10711a000>; target= <(action=_dismissalRecognizerDidRecognize:, target=<_UISwipeHandler 0x281896b00>)>>

Ответы [ 3 ]

0 голосов
/ 24 апреля 2020

Должно быть это

<UIDropShadowView: 0x10521faf0; frame = (0 40; 375 627); gestureRecognizers = <NSArray: 0x2803a5f50>; layer = <CALayer: 0x280de8e00>>
(lldb) po [self.view _parentDescription]
<UIView: 0x10521dac0; frame = (0 0; 375 627); autoresize = W+H; gestureRecognizers = <NSArray: 0x2803a5bc0>; layer = <CALayer: 0x280de87c0>>
    <UIView: 0x105220880; frame = (0 0; 375 627); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x280de8d40>>
        <UIView: 0x105220380; frame = (0 0; 375 627); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x280de8d60>>
            <UIDropShadowView: 0x10521faf0; frame = (0 40; 375 627); gestureRecognizers = <NSArray: 0x2803a5f50>; layer = <CALayer: 0x280de8e00>>
                <UITransitionView: 0x10521f540; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x280de8d20>>
                    <UIWindow: 0x105106ac0; frame = (0 0; 375 667); autoresize = W+H; gestureRecognizers = <NSArray: 0x2803ad230>; layer = <UIWindowLayer: 0x280ded800>>
0 голосов
/ 27 апреля 2020

Я решил это с помощью подписи исследовательского набора. https://github.com/ResearchKit/ResearchKit

В частности: https://github.com/ResearchKit/ResearchKit/blob/master/ResearchKit/Common/ORKSignatureView.h

0 голосов
/ 24 апреля 2020

Если вы используете pushViewController, вам нужно представить этот popviewController. Вот так.

let vc = storyboard?.instantiateViewController(withIdentifier: "popSignatureViewController") as? popSignatureViewController
        vc?.modalPresentationStyle = .overCurrentContext
        self.present(vc!, animated: true, completion: nil)
...