2016-10-06 8 views
2

私は同様の質問をしましたが、他にも何度も質問をしましたが、まだこれを理解することはできません。didSelectRowAtIndexPathの長押しだけ

私は別のものを呼び出すためにサブクラス化したカスタムUITableViewクラスを持っています。私のサブクラスでは、ユーザーはdidSelectRowAtIndexPathのようなものを上書きします。

これをテーブルに割り当てると、didSelectRowAtIndexPathを発動するために長押しする必要があることを除いて、正常に動作します。タップはまったく動作しないようです。私はプロジェクトのどこかでジェスチャー認識機能を持っていますが、それらをすべて無効にしてしまいました。私はこれがsupersやtouchesbeganと関係があるかもしれないと読んだことがあるが、私は今完全に立ち往生しているように感じる。私を助けてください!

class BaseTable: UITableView, UITableViewDelegate, UITableViewDataSource { 

var rowsInSection: Int { return 0} 

required init(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder)! 

    //Standard table set up funcs 

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 

    { 
    print(IndexPath.row) 
    } 
} 

class NewTable: BaseTable{ 

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {      
     print (IndexPath.row + " NEW") 
} 
+0

答えが見つかるでしょうhttp://stackoverflow.com/questions/28430663/send-data-from-tableview-to-detailview-swift – Joe

+0

@Joe、これが何かが見当たりません関係のない問題。私の問題は、didSelectRowAtIndexPathをシングルタップから発生させることができないということです。代わりに、それは長いプレスを検出したときに発生するようです。 – LateNate

+0

テーブルビューはスクロールビュー内にありますか? –

答えて

13

私はこれを理解しました。

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

これが犯人だった:私は、私はタップでキーボードを却下のUIViewControllerの拡張子を持っていた忘れて!クイックフィックスでは、ジェスチャ認識機能を追加する直前に、

 tap.cancelsTouchesInView = false 

を追加するように修正しました。信じられないことに、私はこれに3泊過ごしました。

+2

命の恩人。これは大きな助けになります! –

+2

あなたは私のヒーローです – MattBlack

+0

もし私がこの回答を2回upvoteできれば! –

関連する問題