2014-12-06 6 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: delegate)
  • переопределить функцию setDelegate для пользовательского представления и добавить туда цель;
  • сделать кнопку переменной общественности, так и вручную добавлять цели к нему во внешнем классе
0

ли вы установить userInteractionEnabled в YES на пользовательском представлении? Это NO по умолчанию на представлениях, которые не происходят от UIResponder (в основном кнопки).

Если userInteractionEnabled = NO имеет вид, он будет игнорировать события касания.

Смежные вопросы