У меня много UIButtons без какой-либо акации. Я хочу вызвать некоторые действия в функции обработчика. Я создаю отдельный кран с помощью UITapGestureRecognizer. Когда я нажимаю не на мой UIButton, работа с одним краном. Когда я нажимаю на свой UIButton, я вижу анимацию нажатия этой кнопки, но одиночный дескриптор не работает. Также я создаю двойной кран, и он отлично работает.Одиночный кран, созданный UITapGestureRecognizer, не работает на UIButton
Вопрос №1
Что я могу сделать с помощью одного крана? Обработчик должен работать, когда я нажимаю на свой UIButton.
Вопрос №2
Как я могу получить UIButton в обработчике крана? Мне нужно получить текстовую метку с этой кнопки.
Часть моего кода:
override func viewDidLoad() {
...
let singleTap = UITapGestureRecognizer(target: self, action: "singleTap:")
singleTap.numberOfTapsRequired = 1
singleTap.numberOfTouchesRequired = 1
view.addGestureRecognizer(singleTap)
let doubleTap = UITapGestureRecognizer(target: self, action: "doubleTap:")
doubleTap.numberOfTapsRequired = 2
doubleTap.numberOfTouchesRequired = 1
view.addGestureRecognizer(doubleTap)
singleTap.requireGestureRecognizerToFail(doubleTap)
...
}
func doubleTap(sender: UIGestureRecognizer) {
if sender.state == .Ended {
print("doubleTap")
}
}
func singleTap(sender: UIGestureRecognizer) {
if sender.state == .Ended {
print("singleTap")
}
}
func addButton(time:String, x:CGFloat, y:CGFloat, width:CGFloat, height:CGFloat, tag: Int) -> UIButton {
let button = UIButton(type: UIButtonType.System) as UIButton
button.frame = CGRectMake(x, y, width, height)
button.setTitle(time, forState: UIControlState.Normal)
button.tag = tag
self.scrollView.addSubview(button)
return button
}
почему бы вам не использовать IBAction для кнопки? –
'view.addGestureRecognizer (singleTap)' предположим, что однократное нажатие применяется в представлении, а не на 'button' –
Отключить взаимодействие пользователя для каждого UIButtons или добавить обработчики для всех кнопок. –