Comment différencier si un user tapote l'écran avec son doigt ou un crayon Apple?

L'application prend en charge iPad Pro et il doit fonctionner avec le crayon Apple. Ce que je voudrais faire est de différencier si l'user utilise le crayon d'Apple ou son doigt.

Quelque chose comme:

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 } 

J'ai trouvé l'atsortingbut UITouchTypeStylus mais je UITouchTypeStylus pas pu savoir comment cela fonctionnait.

Mon principal problème est qu'il y a vraiment peu d'exemples, et ils sont écrits rapidement, mais je travaille dans l'objective C. Et je ne suis pas capable de vraiment comprendre ces échantillons.

Regardez ceci, c'est une fonction d'un échantillon que j'ai trouvé sur le développeur Apple:

 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 [...] } 

Je n'ai pas vraiment le time d'apprendre vite maintenant, malheureusement … Cela me bloque complètement.

Donc si quelqu'un pouvait me donner des échantillons en Objective C qui me permettront de travailler avec le Crayon Apple, ou juste un début. Un tutoriel sur un site web serait parfait aussi mais je ne pense pas qu'il y en ait.

Merci d'avance, toute aide sera acceptée! 🙂

Pour vérifier si un UITouch utilise le stylet tactile dans Objective-C:

 if (touch.type == UITouchTypeStylus) { // Do stuff } 

Si vous ne manipulez pas les touches directement, mais en utilisant un outil de reconnaissance des gestes, alors c'est un peu plus compliqué.

Vous pouvez essayer d'append un second allowedTouchTypes reconnaissance de gestes de longue pression et de définir la propriété allowedTouchTypes sur chacun d'entre eux pour reconnaître le stylet ou les touches directes:

 longPressGestureFinger.allowedTouchTypes = @[@(UITouchTypeDirect)]; longPressGesturePencil.allowedTouchTypes = @[@(UITouchTypeStylus)]; 

Si cela ne fonctionne pas, vous devez append un délégué au geste d' gestureRecognizer: shouldReceiveTouch: long, et dans la gestureRecognizer: shouldReceiveTouch: vérifiez et stockez le type de toucher et utilisez-le lorsque l'action gestuelle se triggers.

La class UITouch dans iOS 9.1 a une propriété touch qui returnne le type:

 typedef enum { UITouchTypeDirect, UITouchTypeIndirect, UITouchTypeStylus // THIS ONE } UITouchType;