私のiPhoneアプリでは、ユーザーがビュー上で行ったスワイプジェスチャーを認識する必要があります。
スワイプジェスチャーを認識して、スワイプで機能を実行する必要があります。
ユーザーがスワイプジェスチャーを行うと、ビューが水平方向にスライドして別のビューを表示する必要があります。
何をする必要がありますか?
どうすればそれを認識できますか?
UISwipeGestureRecognizer
を使用します。実際のところ、ジェスチャー認識機能は簡単です。件名にも WWDC10ビデオ があります。セッション120および121。
あなたはそれがどのように機能するかを知っているが、まだ簡単な例を必要とするなら、ここにあります! (覚えていなくても、コピーアンドペーストの例を必要とする場合は、少なくとも便利になります)
UISwipeGestureRecognizer *mSwipeUpRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(doSomething)];
[mSwipeUpRecognizer setDirection:(UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown | UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)];
[[self view] addGestureRecognizer:mSwipeUpRecognizer];
.hファイルに以下を追加します。
<UIGestureRecognizerDelegate>
以下のリンクは、Objective-CでiPhoneのスワイプを検出する方法を説明するビデオチュートリアルにリダイレクトします。
ISwipeGestureRecognizerチュートリアル(iPhoneでのスワイプの検出)
Swiftでそれを実現するためのコードサンプル:
各方向に1つのUISwipeGestureRecognizer
が必要です。 UISwipeGestureRecognizer.direction
プロパティはオプション形式のビットマスクですが、各認識エンジンは一方向しか処理できません。必要に応じて、それらをすべて同じハンドラーに送信し、そこでソートするか、別のハンドラーに送信できます。 1つの実装を次に示します。
override func viewDidLoad() {
super.viewDidLoad()
var swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
swipeRight.direction = UISwipeGestureRecognizerDirection.Right
self.view.addGestureRecognizer(swipeRight)
var swipeDown = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
swipeDown.direction = UISwipeGestureRecognizerDirection.Down
self.view.addGestureRecognizer(swipeDown)
}
func respondToSwipeGesture(gesture: UIGestureRecognizer) {
if let swipeGesture = gesture as? UISwipeGestureRecognizer {
switch swipeGesture.direction {
case UISwipeGestureRecognizerDirection.Right:
println("Swiped right")
case UISwipeGestureRecognizerDirection.Down:
println("Swiped down")
default:
break
}
}
}