The App supports iPad Pro and it has to work with the Apple Pencil. What I would like to do is to differentiate whether the user is using the Apple Pencil or his finger.
Something like:
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
}
I found the UITouchTypeStylus
attribute but was not able to know how it works.
My main problem is that there are really few examples, and they are written in swift, but I am working in objective C. And I am not able to really understand these samples.
Look at this, this is a function from a sample that I found on the 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
[...]
}
I don't really have the time to learn swift now, unfortunately... This is blocking me completely.
So if someone could give me some samples in Objective C that will allow me to work with the Apple Pencil, or just a beginning. A tutorial on a web site would be perfect also but I don't think there are any.
Apple does allow the Pencil to swipe up and down to scroll up and down and to scroll side to side, but that is about it. So, basically the Pencil has not been allowed, as yet, to perform many swiping gestures that our fingers and simple, commonplace capacitive stylii can do.
To draw with Apple Pencil, tap your Pencil on the page. To use your finger, or if you've turned on Select and Scroll, tap the Insert button , tap the Media button , then tap Drawing. Tap one of the four drawing tools at the bottom of the screen: the pen, pencil, crayon, or the fill tool.
Apple Pencil sets the standard for how drawing, note‑taking, and marking up documents should feel — intuitive, precise, and magical. All with imperceptible lag, pixel‑perfect precision, tilt and pressure sensitivity, and support for palm rejection. Incredibly easy to use and ready when inspiration strikes.
To check if a UITouch
is using the stylus touch type in Objective-C:
if (touch.type == UITouchTypeStylus) {
// Do stuff
}
If you're not handling touches directly, but using a gesture recognizer, then it is a little more complicated.
You could try adding a second long press gesture recogniser and setting the allowedTouchTypes
property on each one to recognise stylus or direct touches:
longPressGestureFinger.allowedTouchTypes = @[@(UITouchTypeDirect)];
longPressGesturePencil.allowedTouchTypes = @[@(UITouchTypeStylus)];
If that doesn't work, you would have to add a delegate to the long press gesture, and in the gestureRecognizer: shouldReceiveTouch:
method, check and store the type of touch and use this when the gesture action fires.
The UITouch
class in iOS 9.1 has a touch
property which returns the type:
typedef enum {
UITouchTypeDirect,
UITouchTypeIndirect,
UITouchTypeStylus // THIS ONE
} UITouchType;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With