     private func mediaControlPluginsColidesWithTouch(point: CGPoint, event: UIEvent?) -> Bool {
         guard let mediaControlPlugin = core?.plugins.first(where: { $0 is MediaControl }) else { return false }
         
-        let pluginsWithoutMediaControl = core?.plugins.filter({ $0 is MediaControlPlugin })
-        let pluginColidingWithGesture = pluginsWithoutMediaControl?.first(where: { pluginColideWithTouch($0, point: point, event: event) })
+        let pluginColidingWithGesture = filteredOutModalPlugins()?.first(where: {
+            pluginColideWithTouch($0, point: point, event: event)
+        })
+        
         return pluginColidingWithGesture == nil || mediaControlPlugin.view.isHidden
     }
     
+    private func filteredOutModalPlugins() -> [UICorePlugin]? {
+        let pluginsWithoutMediaControl = core?.plugins.filter({ $0.pluginName != MediaControl.name })
+        return pluginsWithoutMediaControl?.filter({ ($0 as? MediaControlPlugin)?.panel != .modal })
+    }
+    
     private func pluginColideWithTouch(_ plugin: UICorePlugin, point: CGPoint, event: UIEvent?) -> Bool {
-         return plugin.view.point(inside: self.convert(point, to: plugin.view), with: event)
+        return plugin.view.point(inside: self.convert(point, to: plugin.view), with: event)
     }
 }

import UIKit

class DoubleTapPlugin: UICorePlugin {
    
    override open var pluginName: String {
        return String(describing: DoubleTapPlugin.self)

    required init(context: UIObject) {
        super.init(context: context)
        animatonHandler = DoubleTapAnimation(core)
        bindEvents()
    }
    
    required init() {
        super.init()
    }
    
    private func bindEvents() {
        stopListening()
        bindCoreEvents()
    }
    
    private func bindCoreEvents() {
        guard let core = core else { return }
        listenTo(core, eventName: Event.didChangeActiveContainer.rawValue) { [weak self] _ in self?.bindEvents() }
        listenTo(core, eventName: Event.didShowModal.rawValue) { [weak self] _ in self?.didShowModal() }
        listenTo(core, eventName: Event.didHideModal.rawValue) { [weak self] _ in self?.didHideModal() }
    }
    
    private func didShowModal() {
        doubleTapView.isUserInteractionEnabled = false
    }
    
    private func didHideModal() {
        doubleTapView.isUserInteractionEnabled = true
    }
    
    override public func render() {
        doubleTapView.core = core
        doubleTapView.backgroundColor = .clear
        core?.view.addSubview(doubleTapView)
        doubleTapView.bindFrameToSuperviewBounds()
        addGestures()
    }
    
    private func addGestures() {
        let doubleTapGesture = UITapGestureRecognizer(target: self, action: #selector(doubleTap))
        doubleTapGesture.numberOfTapsRequired = 2
        
        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(singleTap))
        tapGesture.require(toFail: doubleTapGesture)
        
        doubleTapView.addGestureRecognizer(doubleTapGesture)
        doubleTapView.addGestureRecognizer(tapGesture)
    }

    @objc private func doubleTap(gestureRecognizer: UITapGestureRecognizer) {
        if gestureRecognizer.state == .recognized {
            let xPosition = gestureRecognizer.location(in: view).x
