2015-12-17 74 views
1

我有一個UITableViewController,我用它來覆蓋UITextField子類的inputView。有時,tableView didSelectRowAtIndexPath會停止被觸發,直到用戶對錶格進行調用並嘗試再次單擊。我似乎無法解決什麼會導致細胞變得無法響應。大多數情況下,它的效果很好,但隨機的單元格會停止響應觸摸,直到用戶滾動一下tableview爲止。UITableView作爲inputView的UITextField didSelectRowAtIndexPath隨機不會被觸發

我認爲在視圖中沒有任何TapGestureRecognizers,並在UITableViewCell中重寫了HitTest,但似乎無法找出問題所在。

關於如何更好地調試的想法?

這裏是的tableView控制器代碼:

protocol MultiSelectPickerDelegate 
{ 
    func didSelectOption(optionIndex:Int, group:Int) 
} 

class MultiSelectPicker: UITableViewController { 

    var multiSelectGroups = [MultiSelectGroup](){ 
     didSet{ 
      self.tableView.reloadData() 
     } 
    } 


    var delegate:MultiSelectPickerDelegate? 

    // MARK: - Table view data source 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return multiSelectGroups.count 

    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return multiSelectGroups[section].multiSelectOptions.count 
    } 


    //MARK: UITableView datasourse function 
    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     delegate?.didSelectOption(indexPath.row, group: indexPath.section) 
    } 

    override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
     let view = UIView(frame: CGRectMake(0, 0, tableView.frame.size.width, 40)) 
     let label = UILabel(frame: CGRectMake(10, 0, tableView.frame.size.width, 40)) 
     label.font = UIFont.systemFontOfSize(14) 
     label.text = multiSelectGroups[section].name 
     label.textColor = UIColor.whiteColor() 
     view.addSubview(label) 
     view.backgroundColor = UIColor.MyAppBlue() 
     return view 

    } 

    override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
     return 40 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     var cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier") 
     if cell == nil{ 
      cell = UITableViewCell(style: .Default, reuseIdentifier: "reuseIdentifier") 
     } 
     cell?.textLabel?.text = multiSelectGroups[indexPath.section].multiSelectOptions[indexPath.row].name 
     return cell! 
    } 
} 
+0

你將MultiSelectPicker.view分配給UITextField.inputView? –

回答

1

我有同樣的問題。在我的表格視圖中,第一次點擊時沒有點擊我表格的最後一行。它突出顯示它,但沒有調用SelectRowAtIndexPath。所有其他行工作正常。但是,如果我打開的tableview反彈的話,好像解決問題

enter image description here

也可以嘗試在Interface Builder的觸摸移除顯示選擇如下: enter image description here

希望它可以幫助

+0

試過這個,似乎沒有什麼區別。感謝您的建議。 –

+0

我的同事注意到UITableView中的彈跳似乎導致行選擇暫時停止工作。我禁用彈跳,問題還沒有重新出現。 –

相關問題