2
私はcellForRowAtIndexPathtableViewCellでtapとlongPressの両方を処理する方法は?
let longPress = UILongPressGestureRecognizer(target: self, action: #selector(CalorieCountViewController.handleLongPress))
cell.addGestureRecognizer(longPress)
longPress.cancelsTouchesInView = true
let tapPress = UITapGestureRecognizer(target: self, action: #selector(CalorieCountViewController.handleTapPress))
cell.addGestureRecognizer(tapPress)
tapPress.cancelsTouchesInView = true
でこれを入れて外これら(以下コード)を入れ、完全didSelectRowAtIndexPath機能を除去し、単に選択された行ユーザ取得する代わりindexPathForSelectedRow使用。
func handleLongPress(sender: UILongPressGestureRecognizer){
let index = tableView.indexPathForSelectedRow!
doSomething(index)
}
func handleTapPress(sender: UITapGestureRecognizer){
let index = tableView.indexPathForSelectedRow!
doSomethingElse(index)
}
はindexPathForSelectedRowがnilを返すが判明したが、私は、行を選択しなかったし、何の「deselectRowAtIndexPathは」どこにでも私のコードではありません。
ですUITableViewの "didSelectRowAtIndexPath"デリゲートメソッドを使用する –