我想建立一个基于泛型类,基于UIViewController类的相同扩展的用户界面。这个例子在屏幕上放置正方形,tap事件将在父类中处理,但它不起作用。我究竟做错了什么?IOS8和Swift多个视图与手势不工作
主要ViewController.swift:
class ViewController : UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//FIRST SQUARE
let widget1 = TestWidget()
widget1.viewX = 10
widget1.viewY = 10
self.view.addSubview(widget1.view)
self.addChildViewController(widget1)
widget1.didMoveToParentViewController(self)
//SECOND SQUARE
let widget2 = TestWidget()
widget2.viewX = 100
widget2.viewY = 100
self.view.addSubview(widget2.view)
self.addChildViewController(widget2)
widget2.didMoveToParentViewController(self)
}
}
这里是TestWidget类:
class TestWidget : UIViewController {
var viewX : CGFloat!
var viewY : CGFloat!
override func viewDidLoad() {
super.viewDidLoad()
let square = UIView()
square.frame = CGRect(x : viewX, y : viewY, width: 50, height: 50)
square.backgroundColor = UIColor.orangeColor()
self.view.addSubview(square)
//GESTURE PART
var tapForSquare = UITapGestureRecognizer()
tapForSquare.addTarget(self, action : "onTap")
square.addGestureRecognizer(tapForSquare)
square.userInteractionEnabled = true
square.multipleTouchEnabled = true
}
func onTap() {
println("square tapped")
}
}
我有两个方形的屏幕上,但水龙头操作仅适用于第二个。这有什么问题吗?
我怀疑问题是与事实只有一个视图控制器可以是父一次,这样以来你设置WIDGET2的做父亲2,它是唯一的父视图控制器。我试图找到证明这一点的文档 - 但我想也许这就是为什么它是唯一的视图控制器正在接受触摸。一般来说,我会推荐一种不同于嵌入包容视图控制器(而不是简单嵌入UIViews)的方法来实现你想要做的事情。 –