【发布时间】:2015-08-08 05:12:07
【问题描述】:
我有一个 100x600 UIView 位于 ViewController 中的主要 UIView 顶部。通常,我想隐藏这个视图。当用户点击几个控件之一时,包括主视图,我取消隐藏子 UIView。点击主UIView 上的任意位置将隐藏它。
在 viewDidLoad 中,我有以下 UITapGestureRecognizer:
let viewTouch = UITapGestureRecognizer(target: self, action: "viewClicked:")
self.view.addGestureRecognizer(viewTouch)
viewClicked 函数如下所示:
func viewClicked(gestureRecognizer: UIGestureRecognizer) {
handleDisplayOfDropdownView()
}
handleDisplayOfDropdown 函数负责显示和隐藏子UIView。它所做的只是调整子视图的 alpha,使其可见或不可见。
func handleDisplayOfDropdownView() {
UIView.animateWithDuration(0.5, animations: {
if !self.dropDownVisible {
self.dropDownVisible = true
self.dropDownView.alpha = 1.0
}
else {
self.dropDownVisible = false
self.dropDownView.alpha = 0
}
})
}
所有的 UI 工作都由故事板完成。我只是在 ViewController 的顶部放置了一个 100x600 的视图。通过点击主 UIView 使其可见和隐藏。
我遇到的问题是子 UIView 在我点击它时消失了。当我设置UITapGestureRecognizer 时,我认为只有点击主UIView 才能激活并隐藏它。似乎在任何地方点击,包括子UIView 都会隐藏它。
我是否错误地设置了UITapGestureRecognizer?
【问题讨论】:
-
您需要检查子视图框架中是否带有触摸点。如果是,则隐藏子视图,否则取消隐藏。
标签: swift uiview uitapgesturerecognizer