如何区分用户是用手指还是苹果铅笔点击屏幕?
How to differentiate whether a user is tapping the screen with his finger or an apple pencil?
该应用程序支持 iPad Pro,并且必须与 Apple Pencil 配合使用。我想做的是区分用户使用的是 Apple Pencil 还是他的手指。
类似于:
if( the user is pressing the screen with his finger){
do something
} else if ( the user is pressing the screen with an Apple Pencil){
do something else
}
我找到了 UITouchTypeStylus
属性,但不知道它是如何工作的。
我的主要问题是例子真的很少,都是swift写的,而我在objective C工作。而且我无法真正理解这些示例。
看这个,这是我在apple developer上找到的示例函数:
func addPointsOfType(var type: LinePoint.PointType, forTouches touches: [UITouch], toLine line: Line, currentUpdateRect updateRect: CGRect) -> CGRect {
var accumulatedRect = CGRect.null
for (idx, touch) in touches.enumerate() {
let isStylus = touch.type == .Stylus // I think that what I'm looking for is something like that
[...]
}
我现在真的没有时间学习 swift,不幸的是...这完全阻碍了我。
因此,如果有人可以在 Objective C 中给我一些样品,让我可以使用 Apple Pencil,或者只是一个开始。网站上的教程也很完美,但我认为没有。
检查 UITouch
是否在 Objective-C 中使用手写笔触摸类型:
if (touch.type == UITouchTypeStylus) {
// Do stuff
}
如果您不是直接处理触摸,而是使用手势识别器,那么它会稍微复杂一些。
您可以尝试添加第二个长按手势识别器并在每个识别器上设置 allowedTouchTypes
属性 以识别手写笔或直接触摸:
longPressGestureFinger.allowedTouchTypes = @[@(UITouchTypeDirect)];
longPressGesturePencil.allowedTouchTypes = @[@(UITouchTypeStylus)];
如果这不起作用,您必须向长按手势添加委托,并在 gestureRecognizer: shouldReceiveTouch:
方法中检查并存储触摸类型,并在触发手势操作时使用它.
UITouch
class 在 iOS 9.1 中有一个 touch
属性 其中 returns 类型:
typedef enum {
UITouchTypeDirect,
UITouchTypeIndirect,
UITouchTypeStylus // THIS ONE
} UITouchType;
该应用程序支持 iPad Pro,并且必须与 Apple Pencil 配合使用。我想做的是区分用户使用的是 Apple Pencil 还是他的手指。
类似于:
if( the user is pressing the screen with his finger){
do something
} else if ( the user is pressing the screen with an Apple Pencil){
do something else
}
我找到了 UITouchTypeStylus
属性,但不知道它是如何工作的。
我的主要问题是例子真的很少,都是swift写的,而我在objective C工作。而且我无法真正理解这些示例。
看这个,这是我在apple developer上找到的示例函数:
func addPointsOfType(var type: LinePoint.PointType, forTouches touches: [UITouch], toLine line: Line, currentUpdateRect updateRect: CGRect) -> CGRect {
var accumulatedRect = CGRect.null
for (idx, touch) in touches.enumerate() {
let isStylus = touch.type == .Stylus // I think that what I'm looking for is something like that
[...]
}
我现在真的没有时间学习 swift,不幸的是...这完全阻碍了我。
因此,如果有人可以在 Objective C 中给我一些样品,让我可以使用 Apple Pencil,或者只是一个开始。网站上的教程也很完美,但我认为没有。
检查 UITouch
是否在 Objective-C 中使用手写笔触摸类型:
if (touch.type == UITouchTypeStylus) {
// Do stuff
}
如果您不是直接处理触摸,而是使用手势识别器,那么它会稍微复杂一些。
您可以尝试添加第二个长按手势识别器并在每个识别器上设置 allowedTouchTypes
属性 以识别手写笔或直接触摸:
longPressGestureFinger.allowedTouchTypes = @[@(UITouchTypeDirect)];
longPressGesturePencil.allowedTouchTypes = @[@(UITouchTypeStylus)];
如果这不起作用,您必须向长按手势添加委托,并在 gestureRecognizer: shouldReceiveTouch:
方法中检查并存储触摸类型,并在触发手势操作时使用它.
UITouch
class 在 iOS 9.1 中有一个 touch
属性 其中 returns 类型:
typedef enum {
UITouchTypeDirect,
UITouchTypeIndirect,
UITouchTypeStylus // THIS ONE
} UITouchType;