【问题标题】:Unable to Select A UITableView Row on Tap, But Can On Long Tap无法在点击时选择 UITableView 行,但可以在长按时选择
【发布时间】:2021-07-27 08:42:33
【问题描述】:

我有一个 iOS 应用,其流程如下:

UITabView -> TabView with UITableView -> Select A Row -> UITabView (as full screen modal) -> UITabView with UIViewController and a UITableView

UIViewController 中的 UITableView 行不允许我通过单击来选择它们。如果我 A) 2 指点击或 B) 长按(3D Force Touch?),我可以选择它们。然后该行触发didSelectRowAt。否则什么都不会发生。

我已经尝试在 UITableView 上设置这些

self.catalogItemsTableView.allowsSelection = true
self.catalogItemsTableView.selectionFollowsFocus = true
self.catalogItemsTableView.allowsSelectionDuringEditing = true

但他们没有改变任何东西。这是视图的样子。是因为 UITableView 在全屏模式中吗?我正在使用以下代码加载“模态”视图:

let orderEntryViewController = OrderEntryViewController(order: order, parentVC: self.parentVC!)
orderEntryViewController.order = order
orderEntryViewController.modalPresentationStyle = .fullScreen
                
self.parentVC!.present(orderEntryViewController, animated: true, completion: nil)

【问题讨论】:

  • “是因为 UITableView 在全屏 Modal 里面吗?”不。更有可能你对吃水龙头的牢房或桌子做了什么。
  • @matt 我向你致敬。我有一个点击手势来关闭键盘,它正在消耗表格视图点击。
  • 没问题!我也做过同样的事情。

标签: ios swift uitableview uikit


【解决方案1】:

我在使用表格视图水龙头的视图中有这个。我把它放在适当的位置以关闭键盘

let tap = UITapGestureRecognizer(target: self, action: #selector(UIInputViewController.dismissKeyboard))

view.addGestureRecognizer(tap)

删除它允许 UITableView 水龙头再次正常工作。

【讨论】:

    【解决方案2】:

    您还可以实现手势识别器委托,然后检查触摸是否在表格视图上。

    func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
        
        if touch.view?.isDescendantOfView(self.catalogItemsTableView) == true {
            return false
        }
        return true
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-18
      • 2015-06-13
      • 1970-01-01
      • 2013-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-25
      • 1970-01-01
      相关资源
      最近更新 更多