禁用手势识别器

use*_*053 7 ipad uigesturerecognizer ios uitapgesturerecognizer

我有一个简单的记忆游戏。但我想关闭水龙头功能。

当我使用imageViewGurka1.gestureRecognizers=NO;它时可以使用,但收到警告消息:Initialization of pointer of type 'NSArray *' to null from a constant boolean expression。(我应该怎么做才能解决此警告消息?)

而且,如果我使用此选项imageViewGurka1 setUserInteractionEnable:NO;,则不会收到警告消息,但将无法再移动图像。

这是一些代码。

-(IBAction)handleTapGurka1:(UIGestureRecognizer *)sender {

if (imageViewGurka1.tag == 0) {
    [imageViewGurka1 setImage:[UIImage imageNamed:@"memorySångerGurka.png"]];
    imageViewGurka1.tag=1;
    [self.view bringSubviewToFront:imageViewGurka1];

}

else {
    [imageViewGurka1 setImage:[UIImage imageNamed:@"memorySångerBaksida.png"]];
    imageViewGurka1.tag=0;
    [self.view bringSubviewToFront:imageViewGurka1];
}

if (imageViewGurka1.tag==1 && imageViewGurka2.tag==1) {
    NSURL *musicFile;
    musicFile = [NSURL fileURLWithPath:
                 [[NSBundle mainBundle]
                  pathForResource:@"applader"
                  ofType:@"mp3"]];
    myAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil];
    [myAudio play];
    //[imageViewGurka1 setUserInteractionEnabled:NO];
    //[imageViewGurka2 setUserInteractionEnabled:NO];
    imageViewGurka1.gestureRecognizers=NO;
    imageViewGurka2.gestureRecognizers=NO;
}

}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

问候

Cih*_*Tek 7

gestureRecognizers是一个数组,其中包含附加到视图的所有手势识别器。您应该遍历该数组中的所有手势识别器,并将其enabled属性设置为false,如下所示:

for (UIGestureRecognizer * g in imageViewGurka1.gestureRecognizers) {
    g.enabled = NO;
}
Run Code Online (Sandbox Code Playgroud)


Hop*_*ope 5

很快,

如果在许多视图上有很多手势,则可以启用和禁用这样的手势。

假设我们有UIView数组,我们要禁用一个手势,这是添加到名为ourView的视图数组中的第一个视图中的第一个手势。

   ourView[0].gestureRecognizers![0].isEnabled = false
Run Code Online (Sandbox Code Playgroud)

您也可以像这样同时启用或禁用所有手势。

   for k in 0..<ourView.count {
      for l in 0..<outView[k].gestureRecognizers.count {
         ourView[k].gestureRecognizers![l].isEnabled = false 
      }
   }
Run Code Online (Sandbox Code Playgroud)