swift2 在swift中长时间按下后调用了didselectrowatindexpath

r7s23pms  于 2022-11-06  发布在  Swift
关注(0)|答案(3)|浏览(169)

我试图从表中选择单元格上的内容,在这里我使用didselectrowatindexpath方法,但它在长时间按下单元格后被调用。
这可能是重复的问题,但我尝试了很多的解决方案,但我的问题没有得到修复这里的代码,这是我正在使用

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

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

    let cell  = tableView.dequeueReusableCellWithIdentifier("AutoCompleteRowIdentifier", forIndexPath: indexPath) as! DrawerTableViewCell
    let index = indexPath.row as Int

    cell.autoCompleteLabel!.text = autocompleteUrls[index].email!
    return cell
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){
    print("You selected cell #\(indexPath.row)!")

    print("didSelectRowAtIndexPath")
    let selectedCell   = autocompleteTableView.cellForRowAtIndexPath(indexPath)! as! DrawerTableViewCell
    print("Selected Table Text =\(selectedCell.autoCompleteLabel!.text)")
    textEmail.text = selectedCell.autoCompleteLabel!.text
    autocompleteTableView.hidden = true

}

而我的viewDidLoad

override func viewDidLoad() {
    pastUrls = defaults.objectForKey("autoCompleteEmail") as? [String] ?? [String]()
    spinnerInitialization()
    super.viewDidLoad()
    self.hideKeyboardWhenTappedAround()
    autocompleteTableView.tableFooterView = UIView()
    autocompleteTableView.hidden = true
    autocompleteTableView.delegate = self
    autocompleteTableView.dataSource = self
    textEmail.delegate = self
}

已更新:-点击时隐藏键盘的代码

extension UIViewController {
func hideKeyboardWhenTappedAround() {
    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
    view.addGestureRecognizer(tap)
}

func dismissKeyboard() {
    view.endEditing(true)
}}
lf5gs5x2

lf5gs5x21#

谢谢Dev.RK这里我使用代码来隐藏键盘,我在hideKeyboardWhenTappedAround()@Dev.Rk中使用view.addGestureRecognizer(tap)方法建议我在view.addGestureRecognizer(tap)之前添加一行该行是tap.cancelsTouchesInView=false,这解决了我的疯狂问题

z6psavjg

z6psavjg2#

你需要解释一下你的结构。我假设你在UIViewController中使用了一个tableView。但是,为什么你的didSelect方法中有下面一行?

let selectedCell   = autocompleteTableView.cellForRowAtIndexPath(indexPath)! as! DrawerTableViewCell

而不是

let selectedCell   = tableView.cellForRowAtIndexPath(indexPath)! as! DrawerTableViewCell

我知道您已经将表视图名称指定为autocompleteTableView,但是该表视图的引用不是来自didSelectRow方法本身吗?

9lowa7mx

9lowa7mx3#

使UserInteraction对单元格内存在的标签启用。
并验证单元格是否启用了UserInteraction id。

相关问题