首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何检测UIViewController外部的轻触/触摸

在iOS开发中,可以通过以下几种方式来检测UIViewController外部的轻触/触摸:

  1. UITapGestureRecognizer:可以通过给UIViewController的view添加一个UITapGestureRecognizer手势识别器来检测轻触事件。首先,创建一个UITapGestureRecognizer对象,并设置其回调方法。然后,将手势识别器添加到UIViewController的view上。当用户在UIViewController的view上进行轻触时,回调方法将被触发。

示例代码:

代码语言:txt
复制
// 创建手势识别器
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))

// 将手势识别器添加到view上
self.view.addGestureRecognizer(tapGesture)

// 手势回调方法
@objc func handleTap(_ gesture: UITapGestureRecognizer) {
    // 处理轻触事件
}
  1. UIResponder的touchesBegan方法:UIViewController是UIResponder的子类,可以重写UIResponder的touchesBegan方法来检测触摸事件。当用户在UIViewController的view上进行触摸时,touchesBegan方法将被调用。

示例代码:

代码语言:txt
复制
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    super.touchesBegan(touches, with: event)
    
    // 处理触摸事件
}
  1. UIWindow的hitTest方法:可以通过重写UIWindow的hitTest方法来检测触摸事件。首先,获取应用程序的主窗口(通常是UIApplication.shared.keyWindow)。然后,重写主窗口的hitTest方法,在方法中判断触摸点是否在UIViewController的view外部,并进行相应处理。

示例代码:

代码语言:txt
复制
class CustomWindow: UIWindow {
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        let result = super.hitTest(point, with: event)
        
        if result == self.rootViewController?.view {
            // 触摸点在UIViewController的view外部
            // 处理触摸事件
        }
        
        return result
    }
}

// 在AppDelegate中设置自定义窗口
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    self.window = CustomWindow(frame: UIScreen.main.bounds)
    self.window?.rootViewController = YourViewController()
    self.window?.makeKeyAndVisible()
    return true
}

以上是几种常见的检测UIViewController外部轻触/触摸的方法。根据具体需求和场景,选择适合的方法来实现相应的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

跟着官方文档学习3D Touch

大意如下: 3DTouch为iOS9用户提供了一个额外维度的人机交互界面。在支持3DTouch的设备上,在app外,人们可以在主屏幕上按压app图标来快速选择app可执行的某个具体的操作。在app内,人们可以使用不同的压力来得到不同的内容查看效果:1.预览视图 2.打开一个单独的视图控制器界面查看视图,进而进行其他交互。 苹果的3D Touch分为两类,一类是app外,在主屏幕上按压app的图标,可以在app图标旁边弹出一个带有快捷操作项的菜单。另一类是在app内,稍用力按压某个视图,可以预览除去该视图额外的内容,再稍加用力按压屏幕,可以弹出另一个控制器界面,这个控制器界面就是点击这个被按压的视图将会跳转的控制器。 下面我就以app内和app外两个维度来跟着官方文档解释3D Touch。

05
领券