Closed popodidi closed 7 years ago
It seems like an anti pattern for me. I think it would be better to give this configuration via dependency injection or some kind of builder pattern. It seems wrong to hold a static delegate for this kind of task.
It must not be highly dynamic imho, but maybe cosmo can give us a better explanation about where this thing might be heading.
Configuration stuff is for me not vialable via delegating, it smells a little bit.
Am 25.12.2016 um 04:54 schrieb Hao notifications@github.com:
@popodidi commented on this pull request.
In TinyConsole/TinyConsole.swift:
@@ -88,6 +88,13 @@ open class TinyConsole { public static func addMarker() { TinyConsole.print("-----------", color: UIColor.red) }
- // MARK: - Actions
- /**
- 3 Finger Tap action delegate
- */
- public weak static var threeTapDelegate: TinyConsoleThreeTapDelegate? I thought it might be simpler and more consistent with other APIs by setting TinyConsole.threeTapDelegate rather than TinyConsole.shared.threeTapDelegate. Since I found you are deprecating old functions and replace them with static ones. Would it be better that TinyConsole is never initiated and APIs are always static func / var ?
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.
I think it would be best, if TinyConsole could be as plain as possible when needed (no default gestures or sheets). Maybe we should move everything (gestures, sheets) out -- as a default implementation hook that can be enabled or disabled if a developer wants to add custom gestures.
To be honest, the gestures and actions that are pre-configured, are my personal preferences as hardcoded defaults. But I didn't give to much thought to it, as TinyConsole provided exactly what I needed ;)
But who is in charge of this? TinyConsole
or TinyConsoleController
?
I would probably choose TinyConsole
. I feel that TinyConsole
is more like an interface to call functions than a class to initiate. In this point of view, even TinyConsoleController(rootViewController:)
is a bit confusing to me since I don't want to be calling function other than TinyConsole.....
. I would be happy to have some kind of TinyConsole.createViewController(_:)
to init root view controller.
Back to our gestures and actions, maybe I can try to define a var consoleViewController: TinyConsoleViewController?
as you did for textView
, and reference it in TinyConsoleViewController.viewDidLoad
?
In this approach, developers can configure by
TinyConsole.shared.consoleViewController.view.addGesture......
. And with some sort of func useDefaultGestureConfiguration()
, we could do default configurations. It's a bit verbose though. Referencing TinyConsole.shared.consoleView
to TinyConsoleViewController.view
should be enough to configure.
That seems a bit of and the API is not easy to discover. The approach to configure it first and then call something like TinyConsole.createViewController
would be the best option.
IMHO TinyConsole should be the only interface that is really public and can be interacted with. I think it would be less confusing to implement this at all.
Currently you have to create a TinyConsoleController (a ViewController) to implement your rootViewController.
The better way would to initiate TinyConsole the first time and configure it for you to work with. To easily give an example there should be some standard actions to implement to give the developers a way to create new actions.
TinyConsole.shared.consoleViewController.view.addGesture......
is too much and you have to dive very deep to implement new gestures for this and it's not easy accesible.
How about this implementation? I have deprecated the public init
of TinyConsoleController
and put all the APIs as static functions of TinyConsole
, where I call shared.consoleController...
to implement functionalities. Ideally, the var consoleController
of TinyConsole.shared
should never be changed as we do gesture configurations or set(rootViewController:)
. In this way, the gesture configurations could hold even the rootViewController
is changed.
I have updated the README.md
file. Please kindly check if this is a feasible solution to configureTinyConsoleController
and to customize gesture recognizers.
I like the implementation so far. But it's breaking the current implementation of the Public API. @Cosmo has the last call about this
Ok, let's do this.
I added a
TinyConsoleThreeTapDelegate
and implemented it inAppDelegate
to customize the action sheet of 3 finger tap.