2014-12-06 76 views
0

我有一個自定義UIView子類有一些UIButtons追加。對於每個按鈕,都有一個在UIViewController上定義的目標操作,該操作包括自定義UIView以編程方式創建自定義視圖與按鈕目標

不知何故TouchUpInside事件永遠不會被捕獲在自定義視圖內,包括ViewController。由於UIViews是UIResponderChain的一部分,我想知道爲什麼事件沒有被解僱?將目標行爲委託進行還是應該以另一種方式進行?

自定義UIView子類:CustomView

let button = UIButton(frame: CGRectMake(10.0, 10.0, 100.0, 100.0)) 
button.addTarget(self.delegate, action: "buttonTapped:", forControlEvents: .TouchUpInside) 

的ViewController

// Include the custom view 
let customView = CustomView() 
customView.delegate = self 
self.view.addSubview(customView) 
... 

func buttonTapped(sender: AnyObject!) { 
    // Doesn't get called 
} 

回答

0

不幸的是我錯過了爲按鈕聲明框架矩形 - 所以按鈕正在顯示,但它們確實不可點擊。

0

我認爲self.delegate是當你添加目標零... 幾個解決方案:

  • 使用委託初始化自定義視圖(創建自定義函數initWithFrame:委託)
  • 覆蓋自定義視圖的setDelegate函數,並將按鈕添加到按鈕;
  • 使按鈕變市民,並手動在外部類添加目標是
0

你在你的自定義視圖設置userInteractionEnabledYES?默認情況下,這是不是從UIResponder(主要是按鈕)的後裔。

如果一個視圖的userInteractionEnabled = NO,它會忽略觸摸事件。

相關問題