不允许在某些视图上进行触摸交互?
问题描述:
我有一个类,我在按钮上处理触摸功能,而这些按钮也是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是阻止触摸被识别的一种方法。
任何想法?
答
最后在我的按钮的类中设置了一个bool“canBeDragged”,当创建按钮时,将当前用户的ID与从firebase中拉出的信息进行比较,并设置bool。然后我只是检查一下按钮是否可以在我的touchesMoved之前拖动。
我会稍微改变你的代码。我想你想到达一些按钮,在哪里(如果用户被允许)可以添加一些评论。为什么不用普通的单击事件来创建按钮,并检查点击事件处理程序(如果用户被允许或不允许)?而且,如果用户不被允许,您可以将按钮变灰。 – derdida
@derdida我只需要允许用户移动他们没有创建的按钮,所以我试图通过检查标记并且然后使用该索引对我的Post类数组检查创建者,并检查post.user它。 我已经有了这个工作,就像我可以检测到,如果用户在该按钮是当前用户是正确的,我只是不知道如何防止触摸移动然后发生。 我也失去了我的内置我猜?当我按下自己的自定义类或者当我添加触摸开始时触摸按钮点击? 我认为不允许用户交互会工作,但是 –