UIButton в пользовательском подклассе UIView не вызывает события действия - PullRequest
0 голосов
/ 10 июня 2019

Об этом спрашивали несколько раз, и я прошу прощения за это. Но я хочу получить хорошее глубокое понимание, почему это происходит. Так вот в чем дело:

ViewController -> customView -> UIButton Я пытаюсь получить доступ к кнопке в контроллере представления, используя делегат / протоколы. Но прежде чем делать все, что я хочу, сначала убедитесь, что кнопка вызывает методы выбора.

В классе customView у меня есть две кнопки UIB, к ним добавлены цели:

   var photoButton: UIButton = {
    let button = UIButton(type: .system)
    button.setTitle("Photos", for: .normal)
    button.translatesAutoresizingMaskIntoConstraints = false
    button.addTarget(self, action: #selector(handleAddPhotoButton), for: .touchUpInside)
    return button
}()

Затем в handlePhotoButton (все еще в пользовательском классе) я говорю это:

    @objc func handleAddPhotoButton() {
    print("button")
}

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

    lazy var accessoryView: AccessoryView = {
    let view = AccessoryView()
    view.delegate = self
    view.translatesAutoresizingMaskIntoConstraints = false
    return view
}()

Я предполагаю, что представление не поддерживается самим собой. Но что здесь не так? Пожалуйста, помогите!

1 Ответ

0 голосов
/ 10 июня 2019

Попробуйте добавить 'ленивый' прямо перед объявлением вашей кнопки

...