Mytableビューがスクロールされたかどうかを検出したいので、次のようなすべてのタッチイベントを試しました。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
//my code
}
しかし、すべてのタッチイベントはスクロールに応答しませんが、セルがタッチ、移動などされたときにのみ応答するようです
UITableViewのスクロールイベントを検出する方法はありますか?
UITableViewDelegate
プロトコルを実装する場合、 UIScrollViewDelegate
メソッドのいずれかを実装することもできます。
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
または
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
たとえば、tableView
というプロパティがある場合:
// ... setting up the table view here ...
self.tableView.delegate = self;
// ...
// Somewhere in your implementation file:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
NSLog(@"Will begin dragging");
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"Did Scroll");
}
これは、ドキュメントまたはヘッダーファイルでわかるように、UITableViewDelegate
がUIScrollViewDelegate
に準拠しているためです。
Solidusからの要求に応じて複数のテーブルビューがある場合、UITableViewはUIScrollViewから派生するため、スクロールビューをコールバックからtableviewにキャストしてから、tableviewと比較してソーステーブルビューを見つけることができます。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
UITableView* fromTableView = (UITableView*) scrollView;
UITableView* targetTableView = nil;
if (fromTableView == self.leftTable) {
targetTableView = self.leftTable;
} else {
targetTableView = self.rightTable;
}
...
}
これらは、UITableViewDelegate
がスクロールするかスクロールしたかを検出するためのSwift 3の場合のUITableView
からのメソッドです。
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
}