すぐに、私はダブルタップとシングルタップを実装したuitableviewCellを持っています。ダブルタップは機能します。しかし、私はシングルタップで少し問題があります。ダブルタップのために、私はタイマー付きのシングルタップを実装しました。次のコードは「シングルタップ」を正常に出力します。scheduleTimerwithTimeIntervalのselectorに引数を渡します
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var now = NSDate().timeIntervalSince1970
if (now - lastClick < 0.3) && indexPath.isEqual(lastIndexPath) {
// Double tapped on cell
if let cell = discoverTableView.cellForRowAtIndexPath(indexPath) as? CommentCell {
cell.doubleTapCellActive({ (addBumpStatus, success) in
})
}
singleTapTimer?.invalidate()
} else {
singleTapTimer = NSTimer.scheduledTimerWithTimeInterval(0.31, target: self, selector: #selector(DiscoverVC.singleTapped), userInfo: nil, repeats: false)
}
lastClick = now
lastIndexPath = indexPath
}
func singleTapped() {
print("Single tapped")
}
ただし、問題は、単一のタップでどのインデックスパスが選択されたかを知ることです。
#selector(DiscoverVC.singleTapped(_:indexPath))
func singleTapped(indexPath: NSIndexPath) {}
しかし、これはセレクタがこの構文を気に入らないため、私にエラーが発生します。セレクタを動作させる方法やより良い方法を作る方法はありますか?通常の方法はNSTimer
パラメータ
func singleTapped(timer : NSTimer) {
print("Single tapped", timer.userInfo!["indexPath"] as! NSIndexPath)
}
とアクションを実装し、例えば、タイマーのuserInfo
プロパティを使用してカスタムデータを渡すことです
なぜあなたをダブルクリックにNSTimerを使用していますか?ジェスチャーも使用できます。 – ivarun
私がテーブルに持っているのは3つのラベルですが、ジェスチャをセルに追加することはできません。私はセル内のすべてにジェスチャーを追加したくなかった – user172902