2015-02-03 2 views
0

Я пытаюсь выяснить, что я нажимаю с UILongPressGesture есть кнопка или переключатель в функции удаленияSwift UILongPressGesture на кнопку или переключатель

func delete() { 
    let subviews = self.view.subviews as [UIView] 
    for v in subviews { 
     if let button = v as? UIButton { 
      println("button") 
     } 
     else if let loadSwitch = v as? UISwitch { 
      println("switch") 
     } 
    } 

У меня есть как кнопка печати и переключения

у меня не было никаких проблем, когда я был только кнопки, но теперь, когда я интегрировал переключатель ...

ФС longpress на коммутаторе я понимаю только, если нажать чуть ниже самого переключателя

ответ

0

Вы можете проверить, какой тип ваши UIViews являются используя isKindOfClass

for v in subviews { 
    if(v.isKindOfClass(UIButton)){ 
     //Do button stuff 
    }else if(v.isKindOfClass(UISwitch)){ 
     //Do switch stuff 
    } 
} 

Но теперь есть еще проблема с переключателем. Проблема в том, что UILonGestureRecognizer не будет вызван, потому что раньше запускались другие действия UISwitch. Но вы можете остановить это с помощью UIGestureRecognizerDelegate-метода shouldReceiveTouch:

class test:UIViewController, UIGestureRecognizerDelegate{ 

    func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { 
     //If it's your switch, the normal gesture won't be called. 
     if(touch.view == yourSwitch){ 
      return false 
     }else{ 
      return true 
     } 
    } 

} 
+0

но я впустил жест = UILongPressGestureRecognizer() в классе или я добавить пусть gestureRecognize = UIGestureRecognize? – stack

+0

Вам не нужно добавлять gesturerecognize. Это только делегат. – Christian

+0

У меня ошибка: фатальная ошибка: неожиданно найден nil при разворачивании необязательного значения if (touch.view == newSwitch) – stack

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