我有一个类,用于处理按钮上的触摸功能,这些按钮也是 Post 类。
我想要的逻辑是“如果 post.user 等于当前的 firebaseuser,则不允许用户移动按钮”
这是我尝试过的:
在我的“DragButtonsClass”中,我收到一条通知,该通知正在 TouchesBegan 上发送到我的 View Controller 。
在我看来
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")
}
}
}
基本上,我在创建按钮时为其分配标签,并且这些标签与我的 Posts 数组对齐。我试图通过发送帖子来检查帖子的用户是否与当前用户相同,然后关闭用户交互。
我打印出“应该可以工作”,但按钮仍然可以拖动。
这似乎是一种 super 草率和迂回的方式来做到这一点,最重要的是它不起作用。我读到关闭 userInteraction 是阻止触摸被识别的一种方法。
有什么想法吗?
最佳答案
最终只是在我的按钮类中设置了一个 bool“canBeDragged”,当创建按钮时,当前用户的 ID 会与从 firebase 中提取的信息进行比较,并设置 bool。然后我只是检查按钮是否可以在触摸移动之前被拖动。
关于ios - 不允许在某些 View 上进行触摸交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38704434/