【问题标题】:didSelectRowAtIndexPath called after long press长按后调用 didSelectRowAtIndexPath
【发布时间】:2016-11-08 03:18:52
【问题描述】:

我在uitextfield 的正下方有一个uitableview,它在uitableview cell 中填充了类似的字符串。 项目被填充。然而,didSelectRowAtIndexPath 在长按后被调用

我的UITableView(嵌入在 UIScrollView 中) - didSelectRowAtIndexPath: 仅在长按自定义单元格后调用

我的视图层次结构:

  • UIScrollView(外滚动)
    • 其他一些视图和按钮
    • UItex 字段
    • UITableView (tableView)

我的代码

class MyViewController:  BaseViewController , UITextFieldDelegate , UITableViewDelegate , UITableViewDataSource , UIGestureRecognizerDelegate  {



@IBOutlet weak var autocompleteTableView: UITableView!
var pastUrls = ["Men", "Women", "Cats", "Dogs", "Children","aaaaaaaaa","aaaaaaaaaaaaaaaaaaa","aaaaaaaaa","a","aa","aaa"]
var autocompleteUrls = [String]()

@IBOutlet weak var image_view_seacrh_ifsc: UIImageView!


@IBOutlet weak var scrollView: UIScrollView!


override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    self.scrollView.panGestureRecognizer.delaysTouchesBegan = true

    autocompleteTableView.delegate = self
    autocompleteTableView.dataSource = self
    autocompleteTableView.scrollEnabled = true
    autocompleteTableView.alwaysBounceVertical = false
    autocompleteTableView.allowsSelection = true
    autocompleteTableView.allowsSelectionDuringEditing = true

    autocompleteTableView.hidden = true




    super.hideKeyboard()
    super.showNavigationBarBackButton()

    let gesture_search_ifsc = UITapGestureRecognizer(target: self, action: "action_Search_Ifsc:")
    gesture_search_ifsc.delegate = self
    gesture_search_ifsc.numberOfTapsRequired = 1

    image_view_seacrh_ifsc.userInteractionEnabled = true
    image_view_seacrh_ifsc.addGestureRecognizer(gesture_search_ifsc)


}




func searchAutocompleteEntriesWithSubstring(substring: String)
{
    autocompleteUrls.removeAll(keepCapacity: false)

    for curString in pastUrls
    {
        var myString:NSString! = curString as NSString

        var substringRange :NSRange! = myString.rangeOfString(substring)

        if (substringRange.location  == 0)
        {
            autocompleteUrls.append(curString)
        }
    }

    autocompleteTableView.reloadData()
    //autocompleteTableView.hidden = false
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return autocompleteUrls.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {


    let cell: AutoBankCell = tableView.dequeueReusableCellWithIdentifier("AutoBankCell") as! AutoBankCell

    cell.label.text = self.autocompleteUrls[indexPath.row]
    //cell.lbl.text = self.autocompleteUrls[indexPath.row]

    return cell


}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let selectedCell : UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
    self.bank_name.text = self.autocompleteUrls[indexPath.row]

    self.autocompleteTableView.scrollEnabled = true
    self.autocompleteTableView.hidden = true
}


}

我的UItableView 被填充并在未嵌入UIScrollView 时正常工作。

【问题讨论】:

  • 为什么要在tableview上添加手势识别器?
  • 我只是想看看这是否可行............但是 UITableView 上的手势识别器不起作用............你能帮帮我吗

标签: ios uitableview uiscrollview uitextfield didselectrowatindexpath


【解决方案1】:

尝试在您的scroll view 中添加uiview 并添加uiview 中的所有元素,例如您的tableView,textfield,views and buttons 等。

因此,该视图用作容器视图。

如果您使用autolayout,请确保您设置了适当的约束。

第二件事删除不必要的手势识别器implicitly,这不是必需的。

默认情况下,Tableview 启用滚动,因此无需再次将其设置为 true。 (顺便说一句,这不会影响您的问题!!)

所以删除不必要的配置并进行适当的设置,我认为您的问题将得到解决。

【讨论】:

  • @Lion............你说的有点......但是 didSelectRowAtIndexPath: 只有在长按自定义单元格后才会被调用跨度>
  • 您是否在表格视图或行或单元格上添加了长按手势?
  • 不,我没有添加长按手势
猜你喜欢
  • 1970-01-01
  • 2014-07-11
  • 2013-08-12
  • 2017-02-15
  • 2018-01-18
  • 2014-06-15
  • 1970-01-01
  • 1970-01-01
  • 2012-02-15
相关资源
最近更新 更多