2016-04-24 2 views
0

У меня есть этот блок кода, но он не работает так, как я хочу. datum_view кажется хорошим, но безрезультатно я нажимаю на него, он не работает.Swift: программно добавить UITapGestureRecognizer не работает

Обновить код:

Position

var containerView: UIView! 
var tov_datum = [String]() 
var datum_view: UIView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    containerView = UIView() 

    let SCREEN_SIZE = UIScreen.mainScreen().bounds 


    var Y: CGFloat = 0 

    for index in tov_datum { 
     datum_view = UIView(frame: CGRectMake(0, Y, SCREEN_SIZE.width, 80)) 
     let gradientView = GradientView(frame: datum_view.bounds) 
     datum_view.insertSubview(gradientView, atIndex: 0) 

     let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:"klikk:") 
     datum_view.userInteractionEnabled = true 
     datum_view.addGestureRecognizer(tapGestureRecognizer) 

     containerView.addSubview(datum_view) 


     Y = Y + 80 
    } 
    let YY = tov_datum.count * 80 
    NSLayoutConstraint(item: vetítésekView, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute:.NotAnAttribute, multiplier: 1.0, constant:CGFloat(YY)).active = true 

    vetítésekView.addSubview(containerView) 
} 


func klikk(recognizer: UITapGestureRecognizer) { 
    print("BOOOOYAAAA") 
} 

ответ

0

Непохоже, размер containerView устанавливается в любом месте. Для того, чтобы быстро увидеть, если это проблема, инициализировать его с кадром, который вы создаете datum_view внутри:

let SCREEN_SIZE = UIScreen.mainScreen().bounds 
containerView = UIView(frame: SCREEN_SIZE) 

Если это работает, то выяснить, какой размер вы на самом деле хотите containerView быть и установить соответствующие ограничения.

+0

спасибо :) его работа +1 – gersey

-1

Вы должны объявить tapGestureRecognizer как свойство.

+0

я сделал, но это не очень хорошо. – gersey

+0

Я пропустил, что все это работает в цикле, в этом случае я бы рекомендовал вам добавить кнопку очистки на каждый созданный вами datum_view. –

+0

Утомлен, чтобы добавить четкую кнопку, на каждом datum_view это не сработало. – gersey

0

Изменить эту строку:

let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:Selector("klikk:")) 

к:

let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:"klikk:") 
+0

Thanx, (отправитель UIButton!) но я это пробовал, не помог. – gersey

1

Изменить

func klikk(recognizer: UITapGestureRecognizer) 

в

func klikk(_ recognizer: UITapGestureRecognizer) 
Смежные вопросы