2015-02-10 51 views
1

我有一個簡單的記憶遊戲。 但我想關閉水龍頭功能。Disable GestureRecognizer

當我使用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; 
} 

} 

感謝您的幫助!

問候

+0

'gestureRecognizers'不是布爾(如錯誤狀態),並沒有嘗試已取得徵詢UIGestureRecognizer,這裏的答案很簡單的文檔。 – matt 2015-02-10 22:02:37

回答

3

gestureRecognizers是包含附着於該視圖的所有手勢識別的陣列。你應該通過陣列中的所有手勢識別循環及其enabled屬性設置爲false這樣的:

for (UIGestureRecognizer * g in imageViewGurka1.gestureRecognizers) { 
    g.enabled = NO; 
} 
+0

如果我在[myAudio播放]後放置該代碼;我得到錯誤信息:Expected'('after'for'...'我應該在哪裏放上「()」謝謝你的幫助! – user3266053 2015-02-10 22:21:03

+0

啊,對不起,我在Swift寫了答案,而不是Obj-C。我現在已經把它改成Obj-C了,如果你不知道區別,你應該在開發應用程序之前先學習語言 – 2015-02-10 22:30:55

+0

感謝您的幫助,我的確如此做 for(UIGestureRecognizer *在imageViewGurka1.gestureRecognizers Gurka1){ Gurka1.enabled = NO; } 爲(UIGestureRecognizer * Gurka2在imageViewGurka2.gestureRecognizers){ Gurka2.enabled = NO; }。 – user3266053 2015-02-10 22:40:50

2

情節提要/出口解決方案

背景: 我有一個UIView,我想就像一個按鈕,所以我添加了一個輕擊手勢識別器。當用戶點擊'按鈕'時,我想禁用按鈕,執行一些動畫,並在動畫之後重新啓用按鈕。

解決方案:如果您正在使用故事板並向UIView中添加了手勢識別器,請將其從手勢識別器拖動到助手編輯器中以創建出口。然後你可以設置gestureRecognizerName.isEnabled = false

@IBOutlet var customButtonGestureRecognizer: UITapGestureRecognizer! 

@IBAction func didTapCustomButton(_ sender: Any) { 
    customButtonGestureRecognizer.isEnabled = false 
    performSomeAnimation(completionHandler: { 
     self.customButtonGestureRecognizer.isEnabled = true 
    }) 
} 

enter image description here