diff --git a/Tablet/TableDirector.swift b/Tablet/TableDirector.swift index a88b27a..fe20c63 100644 --- a/Tablet/TableDirector.swift +++ b/Tablet/TableDirector.swift @@ -28,6 +28,7 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate private weak var tableView: UITableView! private var sections = [TableSectionBuilder]() + public var scrollDelegate: UIScrollViewDelegate? public init(tableView: UITableView) { super.init() @@ -73,6 +74,14 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate builder.0.invokeAction(.custom(action.key), cell: action.cell, indexPath: indexPath, itemIndex: builder.1, userInfo: action.userInfo) } } + + public override func respondsToSelector(selector: Selector) -> Bool { + return super.respondsToSelector(selector) || scrollDelegate?.respondsToSelector(selector) == true + } + + public override func forwardingTargetForSelector(selector: Selector) -> AnyObject? { + return scrollDelegate?.respondsToSelector(selector) == true ? scrollDelegate : super.forwardingTargetForSelector(selector) + } } public extension TableDirector { diff --git a/TabletDemo/TabletDemo.xcodeproj/project.pbxproj b/TabletDemo/TabletDemo.xcodeproj/project.pbxproj index 5c0c483..c043d8b 100644 --- a/TabletDemo/TabletDemo.xcodeproj/project.pbxproj +++ b/TabletDemo/TabletDemo.xcodeproj/project.pbxproj @@ -7,7 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 504740931C4FEEC50012132B /* TableDirectorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504740921C4FEEC50012132B /* TableDirectorExtensions.swift */; }; 508B71841BF48DD300272920 /* TableSectionBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508B71831BF48DD300272920 /* TableSectionBuilder.swift */; }; 508B71861BF48E0D00272920 /* TableRowBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508B71851BF48E0D00272920 /* TableRowBuilder.swift */; }; DA1BCD0F1BF5472C00CC0479 /* TableDirector.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA1BCD0E1BF5472C00CC0479 /* TableDirector.swift */; }; @@ -25,7 +24,6 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 504740921C4FEEC50012132B /* TableDirectorExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableDirectorExtensions.swift; sourceTree = ""; }; 508B71831BF48DD300272920 /* TableSectionBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableSectionBuilder.swift; sourceTree = ""; }; 508B71851BF48E0D00272920 /* TableRowBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableRowBuilder.swift; sourceTree = ""; }; DA1BCD0E1BF5472C00CC0479 /* TableDirector.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableDirector.swift; sourceTree = ""; }; @@ -75,7 +73,6 @@ DAB7EB291BEF787300D2AD5E /* TabletDemo */ = { isa = PBXGroup; children = ( - 504740921C4FEEC50012132B /* TableDirectorExtensions.swift */, DAB7EB2A1BEF787300D2AD5E /* AppDelegate.swift */, DAB7EB2C1BEF787300D2AD5E /* ViewController.swift */, DAB7EB3F1BEFD07E00D2AD5E /* ConfigurableTableViewCell.swift */, @@ -181,7 +178,6 @@ DAED08F11C14DE7E006C04D8 /* MyTableViewCell.swift in Sources */, DAF003961C14DC0C0028C3D6 /* MyNibTableViewCell.swift in Sources */, 508B71861BF48E0D00272920 /* TableRowBuilder.swift in Sources */, - 504740931C4FEEC50012132B /* TableDirectorExtensions.swift in Sources */, DA1BCD0F1BF5472C00CC0479 /* TableDirector.swift in Sources */, DAB7EB401BEFD07E00D2AD5E /* ConfigurableTableViewCell.swift in Sources */, DAB7EB2B1BEF787300D2AD5E /* AppDelegate.swift in Sources */, diff --git a/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate b/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate index fc56dad..4f0dc39 100644 Binary files a/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate and b/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/TabletDemo/TabletDemo/TableDirectorExtensions.swift b/TabletDemo/TabletDemo/TableDirectorExtensions.swift deleted file mode 100644 index e4a6dcd..0000000 --- a/TabletDemo/TabletDemo/TableDirectorExtensions.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// TableDirectorExtensions.swift -// TabletDemo -// -// Created by Max Sokolov on 20/01/16. -// Copyright © 2016 Tablet. All rights reserved. -// - -import Foundation -import UIKit - -extension TableDirector { - - public func scrollViewDidEndDecelerating(scrollView: UIScrollView) { - - //invokeAction(.custom(""), cell: nil, indexPath: nil) - } -} \ No newline at end of file diff --git a/TabletDemo/TabletDemo/ViewController.swift b/TabletDemo/TabletDemo/ViewController.swift index 19aeabf..50d971f 100644 --- a/TabletDemo/TabletDemo/ViewController.swift +++ b/TabletDemo/TabletDemo/ViewController.swift @@ -8,7 +8,7 @@ import UIKit -class ViewController: UIViewController { +class ViewController: UIViewController, UIScrollViewDelegate { @IBOutlet weak var tableView: UITableView! var tableDirector: TableDirector! @@ -17,6 +17,7 @@ class ViewController: UIViewController { super.viewDidLoad() tableDirector = TableDirector(tableView: tableView) + tableDirector.scrollDelegate = self let rowBuilder = TableRowBuilder(items: [1, 2, 3, 4], id: "cell", estimatedRowHeight: 44) .action(.configure) { data in @@ -62,4 +63,8 @@ class ViewController: UIViewController { sectionBuilder.appendRowBuilder(TableRowBuilder(item: 0, estimatedRowHeight: 44)) } + + func scrollViewWillBeginDragging(scrollView: UIScrollView) { + print("begin dragging") + } } \ No newline at end of file