0

そこの。

self.view に長押しジェスチャを追加しましたが、悲しいことに、このジェスチャは認識されるたびに複数回起動します。コードが記載されています。ジェスチャーが認識されるたびに、2 つのアクションシートが表示されました。

    - (void)viewDidLoad
      {
         [super viewDidLoad];
         UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
         longPress.numberOfTouchesRequired = 1;
         [self.view addGestureRecognizer:longPress];
      }


    -(void)handleLongPress:(UILongPressGestureRecognizer *)gesture
     {
        UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:@"Title" delegate:nil cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Hello",nil];
        [action showInView:self.view];
     }
4

1 に答える 1

0

まあ、アクションメソッドのジェスチャーの開始状態だけに関心があるべきだと思います:

-(void)handleLongPress:(UILongPressGestureRecognizer *)gesture
{
   if (gesture.state == UIGestureRecognizerStateBegan) {
      UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:@"Title" delegate:nil cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Hello",nil];
      [action showInView:self.view];
   }
}
于 2013-01-08T10:46:20.557 に答える