2016-08-01 30 views
0

我有一個類,我在按鈕上處理觸摸功能,而這些按鈕也是Post類。不允許在某些視圖上進行觸摸交互?

我要去的是邏輯「如果post.user等於當前firebaseuser,不允許用戶移動按鈕」

這裏是我的嘗試:

在我的「DragButtonsClass」我有一個通知被髮送到我的視圖控制器TouchesBegan。

在視圖中我有

func touchesStarted(notif : NSNotification) { 
    if let dict = notif.userInfo! as? [NSObject: AnyObject] { 

      let tag = dict["tag"]! 
      let tagInt = Int(String((tag))) //this is probably super sloppy, don't know how else to change an AnyObject to an Int though. 
      let post = postArray[tagInt! - 1] 

     let postbutton = self.view.viewWithTag(tagInt!) 
     if post.user == currentUser { 


     postbutton?.userInteractionEnabled = false 
     print("Should be working") 
     } else { 
      print("Didn't work") 
     } 

    } 

} 

基本上我指定標記的按鈕,因爲他們正在創建這些標記線向上與我的帖子陣列。我試圖通過發送郵件來檢查郵政用戶是否與當前用戶相同,然後關閉用戶交互。

我得到「應該工作」打印出來,但按鈕仍然可拖動。

這似乎是一個超級馬虎和迂迴的方式來做到這一點,最重要的是它不工作。我讀過關閉userInteraction是阻止觸摸被識別的一種方法。

任何想法?

+0

我會稍微改變你的代碼。我想你想到達一些按鈕,在哪裏(如果用戶被允許)可以添加一些評論。爲什麼不用普通的單擊事件來創建按鈕,並檢查點擊事件處理程序(如果用戶被允許或不允許)?而且,如果用戶不被允許,您可以將按鈕變灰。 – derdida

+0

@derdida我只需要允許用戶移動他們沒有創建的按鈕,所以我試圖通過檢查標記並且然後使用該索引對我的Post類數組檢查創建者,並檢查post.user它。 我已經有了這個工作,就像我可以檢測到,如果用戶在該按鈕是當前用戶是正確的,我只是不知道如何防止觸摸移動然後發生。 我也失去了我的內置我猜?當我按下自己的自定義類或者當我添加觸摸開始時觸摸按鈕點擊? 我認爲不允許用戶交互會工作,但是 –

回答

0

最後在我的按鈕的類中設置了一個bool「canBeDragged」,當創建按鈕時,將當前用戶的ID與從firebase中拉出的信息進行比較,並設置bool。然後我只是檢查一下按鈕是否可以在我的touchesMoved之前拖動。

相關問題