

iOSアプリの開発において一つのビュー上に複数個のUIViewを配置し、それぞれにタップ、ロングタップの動作(Segue)を割り当てようと思っています。

UIViewにはそれぞれtagが割り振られています。タップは下記のUITouchを使った方法で実装できたのですが、ロングタップの実装方法がわかりません。

[code]

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    
        UITouch *touch = [touches anyObject];
        switch (touch.view.tag) {
            case 1:
                // 1のタグがタップされた場合の処理
                 appDelegate.locno = @"1";
                [self performSegueWithIdentifier:@"read" sender:self];
            case2:
                 appDelegate.locno = @"2";
                [self performSegueWithIdentifier:@"read" sender:self];
    
            default:
                break;
        }
    }
    
[/code]

ロングタップした際には

[code]

    appDelegate.locno = @"タグの番号";
    [self performSegueWithIdentifier:@"write" sender:self];
    
[/code]

を実行するようにしたいのですがどのようにすればいいのでしょうか？


CC BY-SA 3.0
2015-01-12T15:35:11.740
4453
2015-01-12T16:02:10.437
5032
question
ios objective-c iphone
UIViewにタップ、ロングタップの動作を割り当てる方法


`touchesBegan:withEvent:`をオーバーライドするのは、基本的には特殊なケースだけで、`GestureRecognizer`を使った方が簡単かと思います。

タップはいろいろ方法がありますが、[`UITapGestureRecognizer`](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITapGestureRecognizer_Class/index.html)。

ロングタップは[`UILongPressGestureRecognizer`](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UILongPressGestureRecognizer_Class/index.html)による検出が可能です。

利用方法の詳細については、リファレンスをご参照ください。


CC BY-SA 3.0
2015-01-12T16:02:10.437
4456
2015-01-12T16:02:10.437
5337
4453
answer