You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS:如何在HitTest方法中获取触摸类型判断手写笔触摸?

判断手写笔触摸并自定义HitTest行为

你可以通过UITouch的type属性区分触摸类型,iOS 9及以上系统中,UITouchType枚举里的.stylus类型专门对应手写笔(如Apple Pencil)的触摸事件。

在hitTest(_:with:)方法中,从传入的UIEvent对象提取触摸集合,判断是否存在手写笔触摸即可:

override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
    // 先确认事件包含触摸对象
    guard let touches = event?.allTouches else {
        return nil
    }
    
    // 检查是否有手写笔触摸
    let isStylusTouch = touches.contains { $0.type == .stylus }
    
    // 按需求返回结果:手写笔触摸返回默认hitTest结果,否则返回nil
    return isStylusTouch ? super.hitTest(point, with: event) : nil
}

注意事项

  • 部署目标需设为iOS 9.0或更高版本,因为.stylus类型是iOS 9开始引入的。
  • 若事件包含多个触摸点(比如手指和手写笔同时触摸),上述代码会因存在手写笔触摸返回默认结果,符合你的需求。
  • 如果需要进一步区分第一代/第二代Apple Pencil,可以借助UITouch的force或pressure(iOS 10+)属性辅助判断,但基础类型判断已能满足当前场景。

内容的提问来源于stack exchange,提问作者Bartek Chyży

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 03:51:58