2017-02-07 6 views
0

Я хочу вызвать жестов tap, когда я нажимаю на элемент в своем UIPickeView.swift Tap Gesture не запускается

Я использую следующий код для жестов LongPress, который отлично работает. Однако, если я переключусь на UITapGestureRecognizer, ничего не запускается.

ОБНОВЛЕНИЕ ПОЛНОГО КОДА!

@IBOutlet weak var showClaims: UIPickerView! 

    override func viewDidLoad() { 

     super.viewDidLoad() 
showClaims.isUserInteractionEnabled = true 
     let tapped = UITapGestureRecognizer(target: self, action: #selector(ClaimVC.SelectClaimInfo)) 

     showClaims.addGestureRecognizer(tapped) 
} 


func SelectClaimInfo() { 
     GetClaimInfo() 
} 
+0

I 'm не видя, где вы добавили распознаватель жестов, чтобы showClaims. – dfd

+0

Is .userInteractionEnabled true на UIPickerView – Emptyless

+0

@dfd Я заменил tap на longPress. Такой же код используется для крана, как для длительного нажатия. –

ответ

0

Я считаю, что @dfd верна в комментариях.

Пример:

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    setupTapGesture() 
} 

private func setupTapGesture() 
{ 
    let tapGesture = UITapGestureRecognizer(target: self, 
              action: #selector(myVC.doStuff(_:))) 
    view.addGestureRecognizer(tapGesture) 
} 

func doStuff(gesture: UITapGestureRecognizer) {} 

Вы сделали пропустите:

view.addGestureRecognizer(tapGesture) 

Обновление: проверить touchesBegan от этого SO: touchesBegan Swift 3.0 С его помощью вы можете проверить, если ваш UIPicker будет reaciving touchers правильно.

0

Для кого Tap Жест не работать на них до тех пор, пока делают все, как то:

let tap = UITapGestureRecognizer(target: self, action:#selector(self.handleTap(_:))) 
myView.addGestureRecognizer(tap) 

попытаться соответствует UIGestureRecognizerDelegate, а затем МКЭ tap.delegate = self и вы должны реализовать этот UIGestureRecognizerDelegate метод сделать

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
     return true 
    }