Обнаружить нажатие на определенную часть UIButton - PullRequest
0 голосов
/ 02 января 2019

Я разрабатываю клон instagram и пытаюсь взаимодействовать с пользователем с помощью функции подписи к фотографии на экране Home Feed.example

Я хочу, если пользователь нажмет username, контроллер нажмет ProfileViewController или если пользователь нажмет caption, контроллер нажмет CommentsViewController.Спасибо за любые предложения!

Ответы [ 3 ]

0 голосов
/ 02 января 2019

Вы можете сделать это несколькими способами.

Вы можете прикрепить жест, и если вы нажмете на определенную часть кадра, то сделайте одно.

func tapMethod(gesture:UITapGestureRecognizer) {
    //on label
    let touch = tap.locationInView(button)
    If(label.frame.contains(touch)) {
        //....
    }
    //not on label
    Else {
        /....
    }
}

Или вы можете добавить 2 жеста касания, один на этикетке и один на кнопку, затем вы можете переопределить

func hitTest(_ point: CGPoint, 
    with event: UIEvent?) -> UIView?

Это позволит вам касаться подпредставлений кнопкипри необходимости также нажмите на кнопку действия при необходимости.Вот хороший пример.https://medium.com/@nguyenminhphuc/how-to-pass-ui-events-through-views-in-ios-c1be9ab1626b. Уменьшает связывание кода и позволяет объединять разные части.Это самый сложный маршрут, но, на мой взгляд, он дает наибольшее преимущество, обеспечивая простоту перемещения и потока кода

0 голосов
/ 02 января 2019

Вы можете назначить теги для каждой из ваших кнопок в cellforRow Метод, подобный cell.button1.tag = 1 ..., и прикрепить commonEvent к вашим кнопкам и определить, какая кнопка нажата sender.tag == 1 { }и так далее ..

0 голосов
/ 02 января 2019

Используйте тег label , чтобы найти, какой label

titleLabel.tag = 1
captionLabel.tag = 2

затем используйте touchesBegan

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

    guard let touch = touches.first else { return }
    // to find cell index. use super view of label

    if let label = touch.view as! UILabel {

     if label.tag == 1 {
        // Move to profile screen
     } else if label.tag == 2 {
       // Move to comments screen
     }
    }
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...