iOS - Как я могу щелкнуть UIButton за UITableView с прозрачным заголовком

У меня есть UIButton в нижнем слое UIViewController. И у меня есть UITableView (полный размер экрана) поверх UIButton, UITableView имеет заголовок (UIView), который имеет прозрачный фон, который может быть в состоянии видеть и показывать UIButton.

Кнопка UIB не активируется, даже когда кнопка появляется за заголовком табличного представления.

В ячейке моего tableView и в заголовке tableView есть кнопки, поэтому я не смог установить headerView.userInteraction = true или же tableView.userInteraction = true

Я пытался использовать pointInside:withEvent: а также hitTest:withEvent:, UIButton все еще не активен в обоих случаях.

Какие-либо предложения? Спасибо

2 ответа

Вы могли бы использовать UITapGestureRecognizer например вот так:

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    ... 
    let headerViewGesture = UITapGestureRecognizer(target:self, action:#selector(MyClass.headerViewTap(_:)))
    headerView.addGestureRecognizer(mainViewGesture)
    ...
}

func headerViewTap(recognizer: UITapGestureRecognizer) {
    if recognizer.state == UIGestureRecognizerState.Recognized
    { 
       let touchLocation = recognizer.locationInView(recognizer.view)
       print(touchLocation)
       if CGRectContainsPoint(myButton.frame, touchLocation) {
            print("button was touched")
       }
    }
}

Пожалуйста, попробуйте привести SubSubviewToFront, чтобы кнопка была кликабельной.

       self.view.bringSubviewToFront(yourButtton)

Или вы можете проверить в раскадровке, находится ли кнопка внутри какого-либо вида, и добавить, чтобы кнопка была правильно размещена в раскадровке. Кнопка должна находиться под табличным представлением, как на картинке.

Компоненты в viewcontroller

Вы можете попробовать оба способа, и дайте мне знать, если у вас есть какие-либо сомнения.

Другие вопросы по тегам