@@ -368,15 +368,15 @@ class Presenter: NSObject {
368368 func installInteractive( ) {
369369 guard config. dimMode. modal else { return }
370370 if config. dimMode. interactive {
371- maskingView. tappedHander = { [ weak self] in
371+ maskingView. tappedHandler = { [ weak self] in
372372 guard let strongSelf = self else { return }
373373 strongSelf. interactivelyHidden = true
374374 strongSelf. delegate? . hide ( presenter: strongSelf)
375375 }
376376 } else {
377377 // There's no action to take, but the presence of
378378 // a tap handler prevents interaction with underlying views.
379- maskingView. tappedHander = { }
379+ maskingView. tappedHandler = { }
380380 }
381381 }
382382
@@ -398,22 +398,32 @@ class Presenter: NSObject {
398398 elements += [ view]
399399 }
400400 if config. dimMode. interactive {
401- let dismissView = UIView ( frame: maskingView. bounds)
402- dismissView. translatesAutoresizingMaskIntoConstraints = true
403- dismissView. autoresizingMask = [ . flexibleWidth, . flexibleHeight]
404- maskingView. addSubview ( dismissView)
405- maskingView. sendSubviewToBack ( dismissView)
406- dismissView. isUserInteractionEnabled = false
407- dismissView. isAccessibilityElement = true
401+ let dismissView = maskingViewOverlay ( )
408402 dismissView. accessibilityLabel = config. dimModeAccessibilityLabel
409403 dismissView. accessibilityTraits = UIAccessibilityTraits . button
410404 elements. append ( dismissView)
405+ } else if config. dimMode. modal {
406+ let plainView = maskingViewOverlay ( )
407+ plainView. accessibilityTraits = UIAccessibilityTraits . none
408+ elements. append ( plainView)
411409 }
412410 if config. dimMode. modal {
413411 maskingView. accessibilityViewIsModal = true
414412 }
415413 maskingView. accessibleElements = elements
416414 }
415+
416+ func maskingViewOverlay( ) -> UIView {
417+ let overlayView = UIView ( frame: maskingView. bounds)
418+ overlayView. translatesAutoresizingMaskIntoConstraints = true
419+ overlayView. autoresizingMask = [ . flexibleWidth, . flexibleHeight]
420+ maskingView. addSubview ( overlayView)
421+ maskingView. sendSubviewToBack ( overlayView)
422+ overlayView. isUserInteractionEnabled = false
423+ overlayView. isAccessibilityElement = true
424+
425+ return overlayView
426+ }
417427
418428 installed = true
419429 guard let containerView = presentationContext. viewValue ( ) else { return }
0 commit comments