【发布时间】:2016-09-25 01:26:59
【问题描述】:
我有一个启用了分页的UIScrollView,其中包含两个视图控制器:vc0、vc1。滚动视图包含在一个 UIView(称为“dummyView”)中,它包含在它自己的视图控制器中。
问题是当包含滚动视图的视图控制器设置为初始视图控制器时,vc1 不响应触摸。但是,如果将 vc1 设置为初始视图控制器,则 vc1 可以很好地响应触摸事件
为什么通过scrollView查看vc1不响应触摸?
我已经包含了包含滚动视图的视图控制器的 viewdidLoad(),我在其中设置了滚动视图及其所有子视图。
import UIKit
class ViewController: UIViewController, UIGestureRecognizerDelegate {
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var dummyView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
scrollView.contentSize = CGSizeMake(self.view.frame.width * 2, self.view.frame.height);
dummyView.frame.size = scrollView.contentSize
createConstraintsForDummyView()
let vc0 = self.storyboard?.instantiateViewControllerWithIdentifier("vc0") as! ViewController0
self.addChildViewController(vc0)
self.dummyView.addSubview(vc0.view)
vc0.didMoveToParentViewController(self)
createConstraintsForVC0(vc0)
let vc1 = self.storyboard?.instantiateViewControllerWithIdentifier("vc1")
var frame1 = vc1!.view.frame
frame1.origin.x = self.view.frame.size.width
vc1!.view.frame = frame1
self.addChildViewController(vc1!)
self.dummyView.addSubview(vc1!.view)
vc1!.didMoveToParentViewController(self)
createConstraintsForVC1(vc1)
}
编辑:我已经包含了 vc1 的类
import UIKit
class ViewController1: UIViewController, UIGestureRecognizerDelegate {
func handleTap(recognizer: UITapGestureRecognizer){
print("Tapped!")
}
override func viewDidLoad() {
super.viewDidLoad()
let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))
tap.delegate = self
self.view.addGestureRecognizer(tap)
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
【问题讨论】:
-
在哪里以及如何添加 TapRec
-
我是直接加到vc0.view的。我在 vc1 的 viewDidLoad() 中以编程方式完成了它。但即使是 vc0 的 touchesBegan() 也不起作用
-
vc0的viewDidLoad是否被调用。
-
对不起,我的意思是说 vc1 对触摸和点击没有响应。然而,vc0 正在响应。 vc0 和 vc1 的 viewDidLoad 都被调用了
-
对选择器使用新的 Swift 语法:#selector(handleTap)
标签: ios swift uiviewcontroller uiscrollview uigesturerecognizer