3D Touch 是 iPhone 6s 及以后的屏幕一种能检测的压力按下强度的技术。它可以检测不同的按压力度并触发响应的操作。
使用 3D Touch 的基本步骤:
- 在 Info.plist 中打开 3D Touch 能力:
xml
<key>UIRequiresFullScreen</key>
<true/>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>task_assist</string>
<string>task_ambSM</string>
</array>
- 实现 UITraitCollection 的 previewForTraitCollection(_:) 方法来检查设备是否支持 3D Touch。
- 添加recognizer,通常使用 UILongPressGestureRecognizer 来检测不同的按压力度。
- 根据 recognizer 的 state 和 force 值来相应地执行不同的操作。
- 添加Peek和Pop手势来提供快速预览和展开的体验(可选)。
下面是一个简单示例:
swift
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
if traitCollection.forceTouchCapability == .available {
let longPress = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPress(recognizer:)))
view.addGestureRecognizer(longPress)
}
}
@objc func handleLongPress(recognizer: UILongPressGestureRecognizer) {
switch recognizer.state {
case .began:
print("Touch down")
case .changed:
let force = recognizer.force
if force > 0.5 {
print("Medium touch")
} else if force > 1.0 {
print("Hard touch")
}
default:
break
}
}
3D Touch 为我们带来全新的用户交互体验,它使应用程序可以更加智能和高效。