2015-04-08 2 views
0

Я создаю подкласс UIView для использования в проекте и обрабатываю штрихи на основном представлении. Мне бы хотелось, чтобы при касании (на главном экране) тащили и связывали специальные UIViews, они меняют цвет фона. Использование функции UIView по умолчанию «touchhesMoved» обнаруживает касания, возникающие на определенном представлении. Я мог бы настроить основной вид, чтобы проверять каждый экземпляр пользовательского UIView, но это противоречило бы инкапсуляции и приводило бы к беспорядочному коду.Обнаружение касания, возникшего из супервизора

Любые идеи?

ответ

1

Я не уверен, что это то, что вам нужно, но если я поставлю следующий код в контроллер моего вида, чей вид имеет несколько представлений RDView, цвет этих представлений изменит цвет, когда я перетаскиваю его из основного просмотр в RDView.

override func touchesMoved(touches: NSSet, withEvent event: UIEvent) { 
     var touched = self.view.hitTest((touches.anyObject() as UITouch).locationInView(self.view), withEvent: event) 
     if touched is RDView { 
      touched?.backgroundColor = UIColor.redColor() 
     } 
    } 
+0

Это сработало отлично, спасибо! Я не знал о методе hitTest. Теперь все, что я собираюсь сделать, - это вызвать оператор if из метода пользовательского представления. – milesper

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