7

このアプリは 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が、それがどのように機能するかを知ることができませんでした。

私の主な問題は、例が本当に少なく、迅速に記述されていることですが、私は客観的な 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

        [...]
}

残念ながら、今は迅速に学習する時間がありません...これは私を完全にブロックしています。

ですから、誰かが Objective C のサンプルを提供してくれれば、Apple Pencil を使って作業できるようになります。Web サイトのチュートリアルも完璧ですが、私は何もないと思います。

4

2 に答える 2

12

UITouchaが Objective-C でスタイラス タッチ タイプを使用しているかどうかを確認するには:

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

タッチを直接処理するのではなく、ジェスチャ認識エンジンを使用する場合は、もう少し複雑になります。

2 つ目の長押しジェスチャ レコグナイザを追加し、allowedTouchTypesそれぞれにプロパティを設定して、スタイラスまたは直接のタッチを認識することができます。

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

それがうまくいかない場合は、長押しジェスチャにデリゲートを追加し、gestureRecognizer: shouldReceiveTouch:メソッドでタッチの種類を確認して保存し、ジェスチャ アクションが発生したときにこれを使用する必要があります。

于 2016-05-10T08:42:22.533 に答える
1

UITouchiOS 9.1のクラスにtouchは、型を返すプロパティがあります。

typedef enum {
    UITouchTypeDirect,
    UITouchTypeIndirect,
    UITouchTypeStylus       // THIS ONE
} UITouchType;
于 2016-05-10T08:42:47.913 に答える