我想建立一個基於泛型類,基於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)的方法來實現你想要做的事情。 –