不允许在某些视图上进行触摸交互?

问题描述:

我有一个类,我在按钮上处理触摸功能,而这些按钮也是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它。 我已经有了这个工作,就像我可以检测到,如果用户在该按钮是当前用户是正确的,我只是不知道如何防止触摸移动然后发生。 我也失去了我的内置我猜?当我按下自己的自定义类或者当我添加触摸开始时触摸按钮点击? 我认为不允许用户交互会工作,但是 –

最后在我的按钮的类中设置了一个bool“canBeDragged”,当创建按钮时,将当前用户的ID与从firebase中拉出的信息进行比较,并设置bool。然后我只是检查一下按钮是否可以在我的touchesMoved之前拖动。