`
48 | - A good name for a branch describes the thing you’ll be working on, e.g. `voice-over`, `fix-font-size`, etc.
49 |
50 | That’s it! Now you’re ready to work on _Haptica_. Open the `Haptica.xcworkspace` workspace to start coding.
51 |
52 | ### Things to keep in mind
53 |
54 | - Please do not change the minimum iOS version
55 | - Always document new public methods and properties
56 |
57 | ### Testing your local changes
58 |
59 | Before opening a pull request, please make sure your changes don't break things.
60 |
61 | - The framework and example project should build without warnings
62 | - The example project should run without issues.
63 |
64 | ### Submitting the PR
65 |
66 | When the coding is done and you’ve finished testing your changes, you are ready to submit the PR to the [main repo](https://github.com/efremidze/Haptica). Some best practices are:
67 |
68 | - Use a descriptive title
69 | - Link the issues that are related to your PR in the body
70 |
71 | ## Code of Conduct
72 |
73 | Help us keep _Haptica_ open and inclusive. Please read and follow our [Code of Conduct](CODE_OF_CONDUCT.md).
74 |
75 | ## License
76 |
77 | This project is licensed under the terms of the MIT license. See the [LICENSE](LICENSE) file.
78 |
79 | _These contribution guidelines were adapted from [_fastlane_](https://github.com/fastlane/fastlane) guides._
80 |
--------------------------------------------------------------------------------
/Haptica.xcodeproj/xcshareddata/xcschemes/Example.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
37 |
38 |
39 |
40 |
41 |
42 |
52 |
54 |
60 |
61 |
62 |
63 |
69 |
71 |
77 |
78 |
79 |
80 |
82 |
83 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/docs/docsets/Haptica.docset/Contents/Resources/Documents/undocumented.json:
--------------------------------------------------------------------------------
1 | {
2 | "warnings": [
3 | {
4 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
5 | "line": 11,
6 | "symbol": "Haptic",
7 | "symbol_kind": "source.lang.swift.decl.enum",
8 | "warning": "undocumented"
9 | },
10 | {
11 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
12 | "line": 12,
13 | "symbol": "Haptic.impact(_:)",
14 | "symbol_kind": "source.lang.swift.decl.enumelement",
15 | "warning": "undocumented"
16 | },
17 | {
18 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
19 | "line": 13,
20 | "symbol": "Haptic.notification(_:)",
21 | "symbol_kind": "source.lang.swift.decl.enumelement",
22 | "warning": "undocumented"
23 | },
24 | {
25 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
26 | "line": 14,
27 | "symbol": "Haptic.selection",
28 | "symbol_kind": "source.lang.swift.decl.enumelement",
29 | "warning": "undocumented"
30 | },
31 | {
32 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
33 | "line": 17,
34 | "symbol": "Haptic.generate()",
35 | "symbol_kind": "source.lang.swift.decl.function.method.instance",
36 | "warning": "undocumented"
37 | },
38 | {
39 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
40 | "line": null,
41 | "symbol": "Hapticable",
42 | "symbol_kind": "source.lang.swift.decl.extension",
43 | "warning": "undocumented"
44 | },
45 | {
46 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
47 | "line": 15,
48 | "symbol": "Hapticable",
49 | "symbol_kind": "source.lang.swift.decl.protocol",
50 | "warning": "undocumented"
51 | },
52 | {
53 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
54 | "line": 16,
55 | "symbol": "Hapticable.trigger(_:)",
56 | "symbol_kind": "source.lang.swift.decl.function.method.instance",
57 | "warning": "undocumented"
58 | },
59 | {
60 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
61 | "line": 21,
62 | "symbol": "Hapticable.isHaptic",
63 | "symbol_kind": "source.lang.swift.decl.var.instance",
64 | "warning": "undocumented"
65 | },
66 | {
67 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
68 | "line": 35,
69 | "symbol": "Hapticable.hapticType",
70 | "symbol_kind": "source.lang.swift.decl.var.instance",
71 | "warning": "undocumented"
72 | },
73 | {
74 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
75 | "line": 40,
76 | "symbol": "Hapticable.hapticControlEvents",
77 | "symbol_kind": "source.lang.swift.decl.var.instance",
78 | "warning": "undocumented"
79 | },
80 | {
81 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
82 | "line": 50,
83 | "symbol": "Hapticable.addHaptic(_:forControlEvents:)",
84 | "symbol_kind": "source.lang.swift.decl.function.method.instance",
85 | "warning": "undocumented"
86 | },
87 | {
88 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
89 | "line": 56,
90 | "symbol": "Hapticable.removeHaptic(forControlEvents:)",
91 | "symbol_kind": "source.lang.swift.decl.function.method.instance",
92 | "warning": "undocumented"
93 | },
94 | {
95 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
96 | "line": 65,
97 | "symbol": "UIControl.trigger(_:)",
98 | "symbol_kind": "source.lang.swift.decl.function.method.instance",
99 | "warning": "undocumented"
100 | }
101 | ],
102 | "source_directory": "/Users/home/Documents/Haptica"
103 | }
--------------------------------------------------------------------------------
/docs/search.json:
--------------------------------------------------------------------------------
1 | {"Protocols/Hapticable.html#/s:7Haptica10HapticableP7triggeryyypF":{"name":"trigger(_:)","abstract":"Undocumented
","parent_name":"Hapticable"},"Protocols/Hapticable.html#/s:7Haptica10HapticablePAASo9UIControlCRbzrlE8isHapticSbvp":{"name":"isHaptic","abstract":"Undocumented
","parent_name":"Hapticable"},"Protocols/Hapticable.html#/s:7Haptica10HapticablePAASo9UIControlCRbzrlE10hapticTypeAA6HapticOSgvp":{"name":"hapticType","abstract":"Undocumented
","parent_name":"Hapticable"},"Protocols/Hapticable.html#/s:7Haptica10HapticablePAASo9UIControlCRbzrlE19hapticControlEventsSo0cF0VSgvp":{"name":"hapticControlEvents","abstract":"Undocumented
","parent_name":"Hapticable"},"Protocols/Hapticable.html#/s:7Haptica10HapticablePAASo9UIControlCRbzrlE9addHaptic_16forControlEventsyAA0E0O_So0cH0VtF":{"name":"addHaptic(_:forControlEvents:)","abstract":"Undocumented
","parent_name":"Hapticable"},"Protocols/Hapticable.html#/s:7Haptica10HapticablePAASo9UIControlCRbzrlE12removeHaptic16forControlEventsySo0cH0V_tF":{"name":"removeHaptic(forControlEvents:)","abstract":"Undocumented
","parent_name":"Hapticable"},"Protocols/Hapticable.html":{"name":"Hapticable","abstract":"Undocumented
"},"Extensions/UIControl/Event.html#/s:SH9hashValueSivp":{"name":"hashValue","parent_name":"Event"},"Extensions/UIControl/Event.html":{"name":"Event","parent_name":"UIControl"},"Extensions/UIControl.html#/c:@CM@Haptica@@objc(cs)UIControl(im)trigger:":{"name":"trigger(_:)","abstract":"Undocumented
","parent_name":"UIControl"},"Extensions/UIControl.html":{"name":"UIControl"},"Enums/Note.html#/s:7Haptica4NoteO6hapticyAcA6HapticOcACmF":{"name":"haptic(_:)","abstract":"Undocumented
","parent_name":"Note"},"Enums/Note.html#/s:7Haptica4NoteO4waityACSdcACmF":{"name":"wait(_:)","abstract":"Undocumented
","parent_name":"Note"},"Enums/Haptic.html#/s:7Haptica6HapticO6impactyAcA0B13FeedbackStyleOcACmF":{"name":"impact(_:)","abstract":"Undocumented
","parent_name":"Haptic"},"Enums/Haptic.html#/s:7Haptica6HapticO12notificationyAcA0B12FeedbackTypeOcACmF":{"name":"notification(_:)","abstract":"Undocumented
","parent_name":"Haptic"},"Enums/Haptic.html#/s:7Haptica6HapticO9selectionyA2CmF":{"name":"selection","abstract":"Undocumented
","parent_name":"Haptic"},"Enums/Haptic.html#/s:7Haptica6HapticO8generateyyF":{"name":"generate()","abstract":"Undocumented
","parent_name":"Haptic"},"Enums/Haptic.html#/s:7Haptica6HapticO5queueSo16NSOperationQueueCvpZ":{"name":"queue","abstract":"Undocumented
","parent_name":"Haptic"},"Enums/Haptic.html#/s:7Haptica6HapticO4playyySayAA4NoteOGFZ":{"name":"play(_:)","abstract":"Undocumented
","parent_name":"Haptic"},"Enums/Haptic.html#/s:7Haptica6HapticO4play_5delayySS_SdtFZ":{"name":"play(_:delay:)","abstract":"Undocumented
","parent_name":"Haptic"},"Enums/HapticFeedbackType.html#/s:7Haptica18HapticFeedbackTypeO7successyA2CmF":{"name":"success","abstract":"Undocumented
","parent_name":"HapticFeedbackType"},"Enums/HapticFeedbackType.html#/s:7Haptica18HapticFeedbackTypeO7warningyA2CmF":{"name":"warning","abstract":"Undocumented
","parent_name":"HapticFeedbackType"},"Enums/HapticFeedbackType.html#/s:7Haptica18HapticFeedbackTypeO5erroryA2CmF":{"name":"error","abstract":"Undocumented
","parent_name":"HapticFeedbackType"},"Enums/HapticFeedbackStyle.html#/s:7Haptica19HapticFeedbackStyleO5lightyA2CmF":{"name":"light","abstract":"Undocumented
","parent_name":"HapticFeedbackStyle"},"Enums/HapticFeedbackStyle.html#/s:7Haptica19HapticFeedbackStyleO6mediumyA2CmF":{"name":"medium","abstract":"Undocumented
","parent_name":"HapticFeedbackStyle"},"Enums/HapticFeedbackStyle.html#/s:7Haptica19HapticFeedbackStyleO5heavyyA2CmF":{"name":"heavy","abstract":"Undocumented
","parent_name":"HapticFeedbackStyle"},"Enums/HapticFeedbackStyle.html":{"name":"HapticFeedbackStyle","abstract":"Undocumented
"},"Enums/HapticFeedbackType.html":{"name":"HapticFeedbackType","abstract":"Undocumented
"},"Enums/Haptic.html":{"name":"Haptic","abstract":"Undocumented
"},"Enums/Note.html":{"name":"Note","abstract":"Undocumented
"},"Enums.html":{"name":"Enumerations","abstract":"The following enumerations are available globally.
"},"Extensions.html":{"name":"Extensions","abstract":"The following extensions are available globally.
"},"Protocols.html":{"name":"Protocols","abstract":"The following protocols are available globally.
"}}
--------------------------------------------------------------------------------
/docs/docsets/Haptica.docset/Contents/Resources/Documents/search.json:
--------------------------------------------------------------------------------
1 | {"Protocols/Hapticable.html#/s:7Haptica10HapticableP7triggeryyypF":{"name":"trigger(_:)","abstract":"Undocumented
","parent_name":"Hapticable"},"Protocols/Hapticable.html#/s:7Haptica10HapticablePAASo9UIControlCRbzrlE8isHapticSbvp":{"name":"isHaptic","abstract":"Undocumented
","parent_name":"Hapticable"},"Protocols/Hapticable.html#/s:7Haptica10HapticablePAASo9UIControlCRbzrlE10hapticTypeAA6HapticOSgvp":{"name":"hapticType","abstract":"Undocumented
","parent_name":"Hapticable"},"Protocols/Hapticable.html#/s:7Haptica10HapticablePAASo9UIControlCRbzrlE19hapticControlEventsSo0cF0VSgvp":{"name":"hapticControlEvents","abstract":"Undocumented
","parent_name":"Hapticable"},"Protocols/Hapticable.html#/s:7Haptica10HapticablePAASo9UIControlCRbzrlE9addHaptic_16forControlEventsyAA0E0O_So0cH0VtF":{"name":"addHaptic(_:forControlEvents:)","abstract":"Undocumented
","parent_name":"Hapticable"},"Protocols/Hapticable.html#/s:7Haptica10HapticablePAASo9UIControlCRbzrlE12removeHaptic16forControlEventsySo0cH0V_tF":{"name":"removeHaptic(forControlEvents:)","abstract":"Undocumented
","parent_name":"Hapticable"},"Protocols/Hapticable.html":{"name":"Hapticable","abstract":"Undocumented
"},"Extensions/UIControl/Event.html#/s:SH9hashValueSivp":{"name":"hashValue","parent_name":"Event"},"Extensions/UIControl/Event.html":{"name":"Event","parent_name":"UIControl"},"Extensions/UIControl.html#/c:@CM@Haptica@@objc(cs)UIControl(im)trigger:":{"name":"trigger(_:)","abstract":"Undocumented
","parent_name":"UIControl"},"Extensions/UIControl.html":{"name":"UIControl"},"Enums/Note.html#/s:7Haptica4NoteO6hapticyAcA6HapticOcACmF":{"name":"haptic(_:)","abstract":"Undocumented
","parent_name":"Note"},"Enums/Note.html#/s:7Haptica4NoteO4waityACSdcACmF":{"name":"wait(_:)","abstract":"Undocumented
","parent_name":"Note"},"Enums/Haptic.html#/s:7Haptica6HapticO6impactyAcA0B13FeedbackStyleOcACmF":{"name":"impact(_:)","abstract":"Undocumented
","parent_name":"Haptic"},"Enums/Haptic.html#/s:7Haptica6HapticO12notificationyAcA0B12FeedbackTypeOcACmF":{"name":"notification(_:)","abstract":"Undocumented
","parent_name":"Haptic"},"Enums/Haptic.html#/s:7Haptica6HapticO9selectionyA2CmF":{"name":"selection","abstract":"Undocumented
","parent_name":"Haptic"},"Enums/Haptic.html#/s:7Haptica6HapticO8generateyyF":{"name":"generate()","abstract":"Undocumented
","parent_name":"Haptic"},"Enums/Haptic.html#/s:7Haptica6HapticO5queueSo16NSOperationQueueCvpZ":{"name":"queue","abstract":"Undocumented
","parent_name":"Haptic"},"Enums/Haptic.html#/s:7Haptica6HapticO4playyySayAA4NoteOGFZ":{"name":"play(_:)","abstract":"Undocumented
","parent_name":"Haptic"},"Enums/Haptic.html#/s:7Haptica6HapticO4play_5delayySS_SdtFZ":{"name":"play(_:delay:)","abstract":"Undocumented
","parent_name":"Haptic"},"Enums/HapticFeedbackType.html#/s:7Haptica18HapticFeedbackTypeO7successyA2CmF":{"name":"success","abstract":"Undocumented
","parent_name":"HapticFeedbackType"},"Enums/HapticFeedbackType.html#/s:7Haptica18HapticFeedbackTypeO7warningyA2CmF":{"name":"warning","abstract":"Undocumented
","parent_name":"HapticFeedbackType"},"Enums/HapticFeedbackType.html#/s:7Haptica18HapticFeedbackTypeO5erroryA2CmF":{"name":"error","abstract":"Undocumented
","parent_name":"HapticFeedbackType"},"Enums/HapticFeedbackStyle.html#/s:7Haptica19HapticFeedbackStyleO5lightyA2CmF":{"name":"light","abstract":"Undocumented
","parent_name":"HapticFeedbackStyle"},"Enums/HapticFeedbackStyle.html#/s:7Haptica19HapticFeedbackStyleO6mediumyA2CmF":{"name":"medium","abstract":"Undocumented
","parent_name":"HapticFeedbackStyle"},"Enums/HapticFeedbackStyle.html#/s:7Haptica19HapticFeedbackStyleO5heavyyA2CmF":{"name":"heavy","abstract":"Undocumented
","parent_name":"HapticFeedbackStyle"},"Enums/HapticFeedbackStyle.html":{"name":"HapticFeedbackStyle","abstract":"Undocumented
"},"Enums/HapticFeedbackType.html":{"name":"HapticFeedbackType","abstract":"Undocumented
"},"Enums/Haptic.html":{"name":"Haptic","abstract":"Undocumented
"},"Enums/Note.html":{"name":"Note","abstract":"Undocumented
"},"Enums.html":{"name":"Enumerations","abstract":"The following enumerations are available globally.
"},"Extensions.html":{"name":"Extensions","abstract":"The following extensions are available globally.
"},"Protocols.html":{"name":"Protocols","abstract":"The following protocols are available globally.
"}}
--------------------------------------------------------------------------------
/docs/Extensions.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Extensions Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | Extensions Reference
25 |
26 |
27 |
28 |
68 |
69 |
70 |
71 | Extensions
72 | The following extensions are available globally.
73 |
74 |
75 |
100 |
101 |
105 |
106 |
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/docs/docsets/Haptica.docset/Contents/Resources/Documents/Extensions.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Extensions Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | Extensions Reference
25 |
26 |
27 |
28 |
68 |
69 |
70 |
71 | Extensions
72 | The following extensions are available globally.
73 |
74 |
75 |
100 |
101 |
105 |
106 |
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/docs/Extensions/UIButton.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UIButton Extension Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | UIButton Extension Reference
25 |
26 |
27 |
28 |
56 |
57 |
58 |
59 | UIButton
60 |
61 |
62 |
class UIButton : UIControl, NSCoding
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 | -
72 |
79 |
80 |
81 |
82 |
83 |
84 |
Undocumented
85 |
86 |
87 |
88 |
Declaration
89 |
90 |
Swift
91 |
@objc
92 | public func trigger(_ sender: Any)
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
107 |
108 |
109 |
110 |
111 |
112 |
--------------------------------------------------------------------------------
/docs/docsets/Haptica.docset/Contents/Resources/Documents/Extensions/UIButton.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UIButton Extension Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | UIButton Extension Reference
25 |
26 |
27 |
28 |
56 |
57 |
58 |
59 | UIButton
60 |
61 |
62 |
class UIButton : UIControl, NSCoding
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 | -
72 |
79 |
80 |
81 |
82 |
83 |
84 |
Undocumented
85 |
86 |
87 |
88 |
Declaration
89 |
90 |
Swift
91 |
@objc
92 | public func trigger(_ sender: Any)
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
107 |
108 |
109 |
110 |
111 |
112 |
--------------------------------------------------------------------------------
/docs/Extensions/UIControlEvents.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UIControlEvents Extension Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | UIControlEvents Extension Reference
25 |
26 |
27 |
28 |
59 |
60 |
61 |
62 | UIControlEvents
63 |
64 |
65 |
typealias UIControlEvents = UIControl.Event
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | -
75 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
Declaration
91 |
92 |
Swift
93 |
public var hashValue: Int { get }
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
108 |
109 |
110 |
111 |
112 |
113 |
--------------------------------------------------------------------------------
/docs/Protocols.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Protocols Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | Protocols Reference
25 |
26 |
27 |
28 |
68 |
69 |
70 |
71 | Protocols
72 | The following protocols are available globally.
73 |
74 |
75 |
76 |
77 |
78 | -
79 |
86 |
87 |
88 |
89 |
90 |
91 |
Undocumented
92 |
93 |
See more
94 |
95 |
96 |
Declaration
97 |
98 |
Swift
99 |
public protocol Hapticable : AnyObject
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
114 |
115 |
116 |
117 |
118 |
119 |
--------------------------------------------------------------------------------
/docs/docsets/Haptica.docset/Contents/Resources/Documents/Extensions/UIControlEvents.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UIControlEvents Extension Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | UIControlEvents Extension Reference
25 |
26 |
27 |
28 |
59 |
60 |
61 |
62 | UIControlEvents
63 |
64 |
65 |
typealias UIControlEvents = UIControl.Event
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | -
75 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
Declaration
91 |
92 |
Swift
93 |
public var hashValue: Int { get }
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
108 |
109 |
110 |
111 |
112 |
113 |
--------------------------------------------------------------------------------
/docs/docsets/Haptica.docset/Contents/Resources/Documents/Protocols.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Protocols Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | Protocols Reference
25 |
26 |
27 |
28 |
68 |
69 |
70 |
71 | Protocols
72 | The following protocols are available globally.
73 |
74 |
75 |
76 |
77 |
78 | -
79 |
86 |
87 |
88 |
89 |
90 |
91 |
Undocumented
92 |
93 |
See more
94 |
95 |
96 |
Declaration
97 |
98 |
Swift
99 |
public protocol Hapticable : AnyObject
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
114 |
115 |
116 |
117 |
118 |
119 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | [](https://github.com/efremidze/Haptica/actions/workflows/ci.yml)
4 | [](https://cocoapods.org/pods/Haptica)
5 | [](https://github.com/Carthage/Carthage)
6 | [](https://swift.org/package-manager/)
7 | [](https://swift.org)
8 | [](https://github.com/efremidze/Haptica/blob/master/LICENSE)
9 |
10 | # Haptica
11 |
12 | **Haptica** is a simple and expressive haptic feedback generator for iOS.
13 |
14 | ```bash
15 | $ pod try Haptica
16 | ```
17 |
18 | ---
19 |
20 | ## 📱 Requirements
21 |
22 | | Haptica Version | iOS | Swift | Xcode |
23 | |-----------------|-----|-------|--------|
24 | | 4.x | 13+ | 5.x | 11+ |
25 | | 3.x | 9+ | 5.x | 8+ |
26 | | 2.x | 9+ | 4.x | 8+ |
27 | | 1.x | 9+ | 3.x | 8+ |
28 |
29 | ### Haptic Feedback Requirements
30 |
31 | - Device with a supported Taptic Engine
32 | - App running in the foreground
33 | - System Haptics setting enabled
34 |
35 | ---
36 |
37 | ## 🚀 Usage
38 |
39 | Trigger a haptic feedback with a single line:
40 |
41 | ```swift
42 | Haptic.impact(.light).generate()
43 | ```
44 |
45 | ### Feedback Types
46 |
47 | - **Impact** (`.light`, `.medium`, `.heavy`, `.soft`, `.rigid`)
48 | Use to indicate collision or snap-to-position.
49 | - **Notification** (`.success`, `.warning`, `.error`)
50 | Use to communicate task results.
51 | - **Selection**
52 | Use for navigation through discrete values.
53 |
54 | ### Semantic Types (New)
55 |
56 | Use new expressive variants for common interactions:
57 |
58 | ```swift
59 | Haptic.success.generate()
60 | Haptic.warning.generate()
61 | Haptic.start.generate()
62 | Haptic.stop.generate()
63 | Haptic.increase.generate()
64 | Haptic.decrease.generate()
65 | ```
66 |
67 | These semantic styles internally map to appropriate UIKit or Core Haptics-based effects.
68 |
69 | ### Custom Vibration Patterns
70 |
71 | ```swift
72 | Haptic.play("..oO-Oo..", delay: 0.1)
73 | ```
74 |
75 | | Symbol | Feedback Type |
76 | |--------|-----------------|
77 | | `.` | Light impact |
78 | | `o` | Medium impact |
79 | | `O` | Heavy impact |
80 | | `x` | Soft impact |
81 | | `X` | Rigid impact |
82 | | `-` | 0.1s pause |
83 |
84 | Or use structured notes:
85 |
86 | ```swift
87 | Haptic.play([
88 | .haptic(.impact(.light)),
89 | .haptic(.impact(.heavy)),
90 | .wait(0.1),
91 | .haptic(.impact(.heavy)),
92 | .haptic(.impact(.light))
93 | ])
94 | ```
95 |
96 | ### 🔧 Core Haptics Support
97 |
98 | Haptica uses **Core Haptics** by default when available. To use the legacy API:
99 |
100 | ```swift
101 | Haptic.play(notes, legacy: true)
102 | ```
103 |
104 | ### 📂 Play from Pattern File (New) - iOS 16+
105 |
106 | Play a Core Haptics pattern from a bundled `.ahap` file:
107 |
108 | ```swift
109 | Haptic.playPattern(named: "Feedback")
110 | ```
111 |
112 | Make sure the file is included in your app bundle and contains a valid haptic pattern.
113 |
114 | ---
115 |
116 | ## 🧹 UIButton Extension
117 |
118 | Enable haptics for buttons easily:
119 |
120 | ```swift
121 | button.isHaptic = true
122 | button.hapticType = .impact(.light)
123 | ```
124 |
125 | Add or remove haptic feedback on control events:
126 |
127 | ```swift
128 | button.addHaptic(.selection, forControlEvents: .touchDown)
129 | button.removeHaptic(forControlEvents: .touchDown)
130 | ```
131 |
132 | **API Summary:**
133 |
134 | ```swift
135 | var isHaptic: Bool
136 | var hapticType: Haptic?
137 | var hapticControlEvents: UIControl.Event?
138 |
139 | func addHaptic(_ haptic: Haptic, forControlEvents events: UIControl.Event)
140 | func removeHaptic(forControlEvents events: UIControl.Event)
141 | ```
142 |
143 | ---
144 |
145 | ## 🔊 Sound Effects
146 |
147 | Integrate sound feedback with [Peep](https://github.com/efremidze/Peep):
148 |
149 | ```swift
150 | Peep.play(sound: KeyPress.tap)
151 | ```
152 |
153 | ---
154 |
155 | ## 📦 Installation
156 |
157 | ### Swift Package Manager
158 |
159 | ```swift
160 | // For iOS 13+
161 | .package(url: "https://github.com/efremidze/Haptica.git", from: "4.0.0")
162 |
163 | // For iOS 9
164 | .package(url: "https://github.com/efremidze/Haptica.git", from: "3.0.0")
165 | ```
166 |
167 | ### CocoaPods
168 |
169 | ```ruby
170 | use_frameworks!
171 | pod "Haptica"
172 | ```
173 |
174 | ### Carthage
175 |
176 | ```ruby
177 | github "efremidze/Haptica"
178 | ```
179 |
180 | ---
181 |
182 | ## 💬 Communication
183 |
184 | - Found a bug? → [Open an issue](https://github.com/efremidze/Haptica/issues)
185 | - Have a feature request? → [Open an issue](https://github.com/efremidze/Haptica/issues)
186 | - Want to contribute? → Submit a pull request
187 |
188 | ---
189 |
190 | ## 📰 Mentions
191 |
192 | - [Fresh Swift](http://freshswift.net/post/-kj8ocn5j9lt_ljpffm4/)
193 |
194 | ---
195 |
196 | ## 📄 License
197 |
198 | Haptica is available under the MIT license. See the [LICENSE](./LICENSE) file for details.
199 |
--------------------------------------------------------------------------------
/docs/Extensions/UIControl/Event.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Event Extension Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | Event Extension Reference
25 |
26 |
27 |
28 |
68 |
69 |
70 |
71 | Event
72 |
73 |
74 |
struct Event : OptionSet
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 | -
84 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
Declaration
100 |
101 |
Swift
102 |
public var hashValue: Int { get }
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
117 |
118 |
119 |
120 |
121 |
122 |
--------------------------------------------------------------------------------
/docs/css/highlight.css:
--------------------------------------------------------------------------------
1 | /* Credit to https://gist.github.com/wataru420/2048287 */
2 | .highlight {
3 | /* Comment */
4 | /* Error */
5 | /* Keyword */
6 | /* Operator */
7 | /* Comment.Multiline */
8 | /* Comment.Preproc */
9 | /* Comment.Single */
10 | /* Comment.Special */
11 | /* Generic.Deleted */
12 | /* Generic.Deleted.Specific */
13 | /* Generic.Emph */
14 | /* Generic.Error */
15 | /* Generic.Heading */
16 | /* Generic.Inserted */
17 | /* Generic.Inserted.Specific */
18 | /* Generic.Output */
19 | /* Generic.Prompt */
20 | /* Generic.Strong */
21 | /* Generic.Subheading */
22 | /* Generic.Traceback */
23 | /* Keyword.Constant */
24 | /* Keyword.Declaration */
25 | /* Keyword.Pseudo */
26 | /* Keyword.Reserved */
27 | /* Keyword.Type */
28 | /* Literal.Number */
29 | /* Literal.String */
30 | /* Name.Attribute */
31 | /* Name.Builtin */
32 | /* Name.Class */
33 | /* Name.Constant */
34 | /* Name.Entity */
35 | /* Name.Exception */
36 | /* Name.Function */
37 | /* Name.Namespace */
38 | /* Name.Tag */
39 | /* Name.Variable */
40 | /* Operator.Word */
41 | /* Text.Whitespace */
42 | /* Literal.Number.Float */
43 | /* Literal.Number.Hex */
44 | /* Literal.Number.Integer */
45 | /* Literal.Number.Oct */
46 | /* Literal.String.Backtick */
47 | /* Literal.String.Char */
48 | /* Literal.String.Doc */
49 | /* Literal.String.Double */
50 | /* Literal.String.Escape */
51 | /* Literal.String.Heredoc */
52 | /* Literal.String.Interpol */
53 | /* Literal.String.Other */
54 | /* Literal.String.Regex */
55 | /* Literal.String.Single */
56 | /* Literal.String.Symbol */
57 | /* Name.Builtin.Pseudo */
58 | /* Name.Variable.Class */
59 | /* Name.Variable.Global */
60 | /* Name.Variable.Instance */
61 | /* Literal.Number.Integer.Long */ }
62 | .highlight .c {
63 | color: #999988;
64 | font-style: italic; }
65 | .highlight .err {
66 | color: #a61717;
67 | background-color: #e3d2d2; }
68 | .highlight .k {
69 | color: #000000;
70 | font-weight: bold; }
71 | .highlight .o {
72 | color: #000000;
73 | font-weight: bold; }
74 | .highlight .cm {
75 | color: #999988;
76 | font-style: italic; }
77 | .highlight .cp {
78 | color: #999999;
79 | font-weight: bold; }
80 | .highlight .c1 {
81 | color: #999988;
82 | font-style: italic; }
83 | .highlight .cs {
84 | color: #999999;
85 | font-weight: bold;
86 | font-style: italic; }
87 | .highlight .gd {
88 | color: #000000;
89 | background-color: #ffdddd; }
90 | .highlight .gd .x {
91 | color: #000000;
92 | background-color: #ffaaaa; }
93 | .highlight .ge {
94 | color: #000000;
95 | font-style: italic; }
96 | .highlight .gr {
97 | color: #aa0000; }
98 | .highlight .gh {
99 | color: #999999; }
100 | .highlight .gi {
101 | color: #000000;
102 | background-color: #ddffdd; }
103 | .highlight .gi .x {
104 | color: #000000;
105 | background-color: #aaffaa; }
106 | .highlight .go {
107 | color: #888888; }
108 | .highlight .gp {
109 | color: #555555; }
110 | .highlight .gs {
111 | font-weight: bold; }
112 | .highlight .gu {
113 | color: #aaaaaa; }
114 | .highlight .gt {
115 | color: #aa0000; }
116 | .highlight .kc {
117 | color: #000000;
118 | font-weight: bold; }
119 | .highlight .kd {
120 | color: #000000;
121 | font-weight: bold; }
122 | .highlight .kp {
123 | color: #000000;
124 | font-weight: bold; }
125 | .highlight .kr {
126 | color: #000000;
127 | font-weight: bold; }
128 | .highlight .kt {
129 | color: #445588; }
130 | .highlight .m {
131 | color: #009999; }
132 | .highlight .s {
133 | color: #d14; }
134 | .highlight .na {
135 | color: #008080; }
136 | .highlight .nb {
137 | color: #0086B3; }
138 | .highlight .nc {
139 | color: #445588;
140 | font-weight: bold; }
141 | .highlight .no {
142 | color: #008080; }
143 | .highlight .ni {
144 | color: #800080; }
145 | .highlight .ne {
146 | color: #990000;
147 | font-weight: bold; }
148 | .highlight .nf {
149 | color: #990000; }
150 | .highlight .nn {
151 | color: #555555; }
152 | .highlight .nt {
153 | color: #000080; }
154 | .highlight .nv {
155 | color: #008080; }
156 | .highlight .ow {
157 | color: #000000;
158 | font-weight: bold; }
159 | .highlight .w {
160 | color: #bbbbbb; }
161 | .highlight .mf {
162 | color: #009999; }
163 | .highlight .mh {
164 | color: #009999; }
165 | .highlight .mi {
166 | color: #009999; }
167 | .highlight .mo {
168 | color: #009999; }
169 | .highlight .sb {
170 | color: #d14; }
171 | .highlight .sc {
172 | color: #d14; }
173 | .highlight .sd {
174 | color: #d14; }
175 | .highlight .s2 {
176 | color: #d14; }
177 | .highlight .se {
178 | color: #d14; }
179 | .highlight .sh {
180 | color: #d14; }
181 | .highlight .si {
182 | color: #d14; }
183 | .highlight .sx {
184 | color: #d14; }
185 | .highlight .sr {
186 | color: #009926; }
187 | .highlight .s1 {
188 | color: #d14; }
189 | .highlight .ss {
190 | color: #990073; }
191 | .highlight .bp {
192 | color: #999999; }
193 | .highlight .vc {
194 | color: #008080; }
195 | .highlight .vg {
196 | color: #008080; }
197 | .highlight .vi {
198 | color: #008080; }
199 | .highlight .il {
200 | color: #009999; }
201 |
--------------------------------------------------------------------------------
/docs/docsets/Haptica.docset/Contents/Resources/Documents/Extensions/UIControl/Event.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Event Extension Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | Event Extension Reference
25 |
26 |
27 |
28 |
68 |
69 |
70 |
71 | Event
72 |
73 |
74 |
struct Event : OptionSet
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 | -
84 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
Declaration
100 |
101 |
Swift
102 |
public var hashValue: Int { get }
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
117 |
118 |
119 |
120 |
121 |
122 |
--------------------------------------------------------------------------------
/docs/docsets/Haptica.docset/Contents/Resources/Documents/css/highlight.css:
--------------------------------------------------------------------------------
1 | /* Credit to https://gist.github.com/wataru420/2048287 */
2 | .highlight {
3 | /* Comment */
4 | /* Error */
5 | /* Keyword */
6 | /* Operator */
7 | /* Comment.Multiline */
8 | /* Comment.Preproc */
9 | /* Comment.Single */
10 | /* Comment.Special */
11 | /* Generic.Deleted */
12 | /* Generic.Deleted.Specific */
13 | /* Generic.Emph */
14 | /* Generic.Error */
15 | /* Generic.Heading */
16 | /* Generic.Inserted */
17 | /* Generic.Inserted.Specific */
18 | /* Generic.Output */
19 | /* Generic.Prompt */
20 | /* Generic.Strong */
21 | /* Generic.Subheading */
22 | /* Generic.Traceback */
23 | /* Keyword.Constant */
24 | /* Keyword.Declaration */
25 | /* Keyword.Pseudo */
26 | /* Keyword.Reserved */
27 | /* Keyword.Type */
28 | /* Literal.Number */
29 | /* Literal.String */
30 | /* Name.Attribute */
31 | /* Name.Builtin */
32 | /* Name.Class */
33 | /* Name.Constant */
34 | /* Name.Entity */
35 | /* Name.Exception */
36 | /* Name.Function */
37 | /* Name.Namespace */
38 | /* Name.Tag */
39 | /* Name.Variable */
40 | /* Operator.Word */
41 | /* Text.Whitespace */
42 | /* Literal.Number.Float */
43 | /* Literal.Number.Hex */
44 | /* Literal.Number.Integer */
45 | /* Literal.Number.Oct */
46 | /* Literal.String.Backtick */
47 | /* Literal.String.Char */
48 | /* Literal.String.Doc */
49 | /* Literal.String.Double */
50 | /* Literal.String.Escape */
51 | /* Literal.String.Heredoc */
52 | /* Literal.String.Interpol */
53 | /* Literal.String.Other */
54 | /* Literal.String.Regex */
55 | /* Literal.String.Single */
56 | /* Literal.String.Symbol */
57 | /* Name.Builtin.Pseudo */
58 | /* Name.Variable.Class */
59 | /* Name.Variable.Global */
60 | /* Name.Variable.Instance */
61 | /* Literal.Number.Integer.Long */ }
62 | .highlight .c {
63 | color: #999988;
64 | font-style: italic; }
65 | .highlight .err {
66 | color: #a61717;
67 | background-color: #e3d2d2; }
68 | .highlight .k {
69 | color: #000000;
70 | font-weight: bold; }
71 | .highlight .o {
72 | color: #000000;
73 | font-weight: bold; }
74 | .highlight .cm {
75 | color: #999988;
76 | font-style: italic; }
77 | .highlight .cp {
78 | color: #999999;
79 | font-weight: bold; }
80 | .highlight .c1 {
81 | color: #999988;
82 | font-style: italic; }
83 | .highlight .cs {
84 | color: #999999;
85 | font-weight: bold;
86 | font-style: italic; }
87 | .highlight .gd {
88 | color: #000000;
89 | background-color: #ffdddd; }
90 | .highlight .gd .x {
91 | color: #000000;
92 | background-color: #ffaaaa; }
93 | .highlight .ge {
94 | color: #000000;
95 | font-style: italic; }
96 | .highlight .gr {
97 | color: #aa0000; }
98 | .highlight .gh {
99 | color: #999999; }
100 | .highlight .gi {
101 | color: #000000;
102 | background-color: #ddffdd; }
103 | .highlight .gi .x {
104 | color: #000000;
105 | background-color: #aaffaa; }
106 | .highlight .go {
107 | color: #888888; }
108 | .highlight .gp {
109 | color: #555555; }
110 | .highlight .gs {
111 | font-weight: bold; }
112 | .highlight .gu {
113 | color: #aaaaaa; }
114 | .highlight .gt {
115 | color: #aa0000; }
116 | .highlight .kc {
117 | color: #000000;
118 | font-weight: bold; }
119 | .highlight .kd {
120 | color: #000000;
121 | font-weight: bold; }
122 | .highlight .kp {
123 | color: #000000;
124 | font-weight: bold; }
125 | .highlight .kr {
126 | color: #000000;
127 | font-weight: bold; }
128 | .highlight .kt {
129 | color: #445588; }
130 | .highlight .m {
131 | color: #009999; }
132 | .highlight .s {
133 | color: #d14; }
134 | .highlight .na {
135 | color: #008080; }
136 | .highlight .nb {
137 | color: #0086B3; }
138 | .highlight .nc {
139 | color: #445588;
140 | font-weight: bold; }
141 | .highlight .no {
142 | color: #008080; }
143 | .highlight .ni {
144 | color: #800080; }
145 | .highlight .ne {
146 | color: #990000;
147 | font-weight: bold; }
148 | .highlight .nf {
149 | color: #990000; }
150 | .highlight .nn {
151 | color: #555555; }
152 | .highlight .nt {
153 | color: #000080; }
154 | .highlight .nv {
155 | color: #008080; }
156 | .highlight .ow {
157 | color: #000000;
158 | font-weight: bold; }
159 | .highlight .w {
160 | color: #bbbbbb; }
161 | .highlight .mf {
162 | color: #009999; }
163 | .highlight .mh {
164 | color: #009999; }
165 | .highlight .mi {
166 | color: #009999; }
167 | .highlight .mo {
168 | color: #009999; }
169 | .highlight .sb {
170 | color: #d14; }
171 | .highlight .sc {
172 | color: #d14; }
173 | .highlight .sd {
174 | color: #d14; }
175 | .highlight .s2 {
176 | color: #d14; }
177 | .highlight .se {
178 | color: #d14; }
179 | .highlight .sh {
180 | color: #d14; }
181 | .highlight .si {
182 | color: #d14; }
183 | .highlight .sx {
184 | color: #d14; }
185 | .highlight .sr {
186 | color: #009926; }
187 | .highlight .s1 {
188 | color: #d14; }
189 | .highlight .ss {
190 | color: #990073; }
191 | .highlight .bp {
192 | color: #999999; }
193 | .highlight .vc {
194 | color: #008080; }
195 | .highlight .vg {
196 | color: #008080; }
197 | .highlight .vi {
198 | color: #008080; }
199 | .highlight .il {
200 | color: #009999; }
201 |
--------------------------------------------------------------------------------
/docs/Extensions/UIControl.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UIControl Extension Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | UIControl Extension Reference
25 |
26 |
27 |
28 |
68 |
69 |
70 |
74 |
75 |
76 |
77 | -
78 |
79 |
80 |
81 |
82 | Event
83 |
84 |
85 |
86 |
87 |
88 |
89 |
93 |
94 |
Declaration
95 |
96 |
Swift
97 |
struct Event : OptionSet
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 | -
109 |
116 |
117 |
118 |
119 |
120 |
121 |
Undocumented
122 |
123 |
124 |
125 |
Declaration
126 |
127 |
Swift
128 |
@objc
129 | public func trigger(_ sender: Any)
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
144 |
145 |
146 |
147 |
148 |
149 |
--------------------------------------------------------------------------------
/docs/Enums/Note.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Note Enumeration Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | Note Enumeration Reference
25 |
26 |
27 |
28 |
68 |
69 |
70 |
71 | Note
72 |
73 |
74 |
public enum Note
75 |
76 |
77 |
78 | Undocumented
79 |
80 |
81 |
82 |
83 |
84 | -
85 |
92 |
93 |
94 |
95 |
96 |
97 |
Undocumented
98 |
99 |
100 |
101 |
Declaration
102 |
103 |
Swift
104 |
case haptic(Haptic)
105 |
106 |
107 |
108 |
109 |
110 |
111 | -
112 |
113 |
114 |
115 |
116 | wait(_:)
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
Undocumented
125 |
126 |
127 |
128 |
Declaration
129 |
130 |
Swift
131 |
case wait(TimeInterval)
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
146 |
147 |
148 |
149 |
150 |
151 |
--------------------------------------------------------------------------------
/docs/docsets/Haptica.docset/Contents/Resources/Documents/Extensions/UIControl.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UIControl Extension Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | UIControl Extension Reference
25 |
26 |
27 |
28 |
68 |
69 |
70 |
74 |
75 |
76 |
77 | -
78 |
79 |
80 |
81 |
82 | Event
83 |
84 |
85 |
86 |
87 |
88 |
89 |
93 |
94 |
Declaration
95 |
96 |
Swift
97 |
struct Event : OptionSet
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 | -
109 |
116 |
117 |
118 |
119 |
120 |
121 |
Undocumented
122 |
123 |
124 |
125 |
Declaration
126 |
127 |
Swift
128 |
@objc
129 | public func trigger(_ sender: Any)
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
144 |
145 |
146 |
147 |
148 |
149 |
--------------------------------------------------------------------------------
/docs/docsets/Haptica.docset/Contents/Resources/Documents/Enums/Note.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Note Enumeration Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | Note Enumeration Reference
25 |
26 |
27 |
28 |
68 |
69 |
70 |
71 | Note
72 |
73 |
74 |
public enum Note
75 |
76 |
77 |
78 | Undocumented
79 |
80 |
81 |
82 |
83 |
84 | -
85 |
92 |
93 |
94 |
95 |
96 |
97 |
Undocumented
98 |
99 |
100 |
101 |
Declaration
102 |
103 |
Swift
104 |
case haptic(Haptic)
105 |
106 |
107 |
108 |
109 |
110 |
111 | -
112 |
113 |
114 |
115 |
116 | wait(_:)
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
Undocumented
125 |
126 |
127 |
128 |
Declaration
129 |
130 |
Swift
131 |
case wait(TimeInterval)
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
146 |
147 |
148 |
149 |
150 |
151 |
--------------------------------------------------------------------------------
/docs/undocumented.json:
--------------------------------------------------------------------------------
1 | {
2 | "warnings": [
3 | {
4 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
5 | "line": null,
6 | "symbol": "Haptic",
7 | "symbol_kind": "source.lang.swift.decl.extension",
8 | "warning": "undocumented"
9 | },
10 | {
11 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
12 | "line": 11,
13 | "symbol": "HapticFeedbackStyle",
14 | "symbol_kind": "source.lang.swift.decl.enum",
15 | "warning": "undocumented"
16 | },
17 | {
18 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
19 | "line": 12,
20 | "symbol": "HapticFeedbackStyle.heavy",
21 | "symbol_kind": "source.lang.swift.decl.enumelement",
22 | "warning": "undocumented"
23 | },
24 | {
25 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
26 | "line": 12,
27 | "symbol": "HapticFeedbackStyle.light",
28 | "symbol_kind": "source.lang.swift.decl.enumelement",
29 | "warning": "undocumented"
30 | },
31 | {
32 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
33 | "line": 12,
34 | "symbol": "HapticFeedbackStyle.medium",
35 | "symbol_kind": "source.lang.swift.decl.enumelement",
36 | "warning": "undocumented"
37 | },
38 | {
39 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
40 | "line": 22,
41 | "symbol": "HapticFeedbackType",
42 | "symbol_kind": "source.lang.swift.decl.enum",
43 | "warning": "undocumented"
44 | },
45 | {
46 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
47 | "line": 23,
48 | "symbol": "HapticFeedbackType.error",
49 | "symbol_kind": "source.lang.swift.decl.enumelement",
50 | "warning": "undocumented"
51 | },
52 | {
53 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
54 | "line": 23,
55 | "symbol": "HapticFeedbackType.success",
56 | "symbol_kind": "source.lang.swift.decl.enumelement",
57 | "warning": "undocumented"
58 | },
59 | {
60 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
61 | "line": 23,
62 | "symbol": "HapticFeedbackType.warning",
63 | "symbol_kind": "source.lang.swift.decl.enumelement",
64 | "warning": "undocumented"
65 | },
66 | {
67 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
68 | "line": 33,
69 | "symbol": "Haptic",
70 | "symbol_kind": "source.lang.swift.decl.enum",
71 | "warning": "undocumented"
72 | },
73 | {
74 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
75 | "line": 34,
76 | "symbol": "Haptic.impact(_:)",
77 | "symbol_kind": "source.lang.swift.decl.enumelement",
78 | "warning": "undocumented"
79 | },
80 | {
81 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
82 | "line": 35,
83 | "symbol": "Haptic.notification(_:)",
84 | "symbol_kind": "source.lang.swift.decl.enumelement",
85 | "warning": "undocumented"
86 | },
87 | {
88 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
89 | "line": 36,
90 | "symbol": "Haptic.selection",
91 | "symbol_kind": "source.lang.swift.decl.enumelement",
92 | "warning": "undocumented"
93 | },
94 | {
95 | "file": "/Users/home/Documents/Haptica/Sources/Haptic.swift",
96 | "line": 39,
97 | "symbol": "Haptic.generate()",
98 | "symbol_kind": "source.lang.swift.decl.function.method.instance",
99 | "warning": "undocumented"
100 | },
101 | {
102 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
103 | "line": null,
104 | "symbol": "Hapticable",
105 | "symbol_kind": "source.lang.swift.decl.extension",
106 | "warning": "undocumented"
107 | },
108 | {
109 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
110 | "line": 15,
111 | "symbol": "Hapticable",
112 | "symbol_kind": "source.lang.swift.decl.protocol",
113 | "warning": "undocumented"
114 | },
115 | {
116 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
117 | "line": 16,
118 | "symbol": "Hapticable.trigger(_:)",
119 | "symbol_kind": "source.lang.swift.decl.function.method.instance",
120 | "warning": "undocumented"
121 | },
122 | {
123 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
124 | "line": 21,
125 | "symbol": "Hapticable.isHaptic",
126 | "symbol_kind": "source.lang.swift.decl.var.instance",
127 | "warning": "undocumented"
128 | },
129 | {
130 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
131 | "line": 35,
132 | "symbol": "Hapticable.hapticType",
133 | "symbol_kind": "source.lang.swift.decl.var.instance",
134 | "warning": "undocumented"
135 | },
136 | {
137 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
138 | "line": 40,
139 | "symbol": "Hapticable.hapticControlEvents",
140 | "symbol_kind": "source.lang.swift.decl.var.instance",
141 | "warning": "undocumented"
142 | },
143 | {
144 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
145 | "line": 50,
146 | "symbol": "Hapticable.addHaptic(_:forControlEvents:)",
147 | "symbol_kind": "source.lang.swift.decl.function.method.instance",
148 | "warning": "undocumented"
149 | },
150 | {
151 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
152 | "line": 56,
153 | "symbol": "Hapticable.removeHaptic(forControlEvents:)",
154 | "symbol_kind": "source.lang.swift.decl.function.method.instance",
155 | "warning": "undocumented"
156 | },
157 | {
158 | "file": "/Users/home/Documents/Haptica/Sources/Hapticable.swift",
159 | "line": 65,
160 | "symbol": "UIControl.trigger(_:)",
161 | "symbol_kind": "source.lang.swift.decl.function.method.instance",
162 | "warning": "undocumented"
163 | },
164 | {
165 | "file": "/Users/home/Documents/Haptica/Sources/Pattern.swift",
166 | "line": 12,
167 | "symbol": "Haptic.queue",
168 | "symbol_kind": "source.lang.swift.decl.var.static",
169 | "warning": "undocumented"
170 | },
171 | {
172 | "file": "/Users/home/Documents/Haptica/Sources/Pattern.swift",
173 | "line": 14,
174 | "symbol": "Haptic.play(_:)",
175 | "symbol_kind": "source.lang.swift.decl.function.method.static",
176 | "warning": "undocumented"
177 | },
178 | {
179 | "file": "/Users/home/Documents/Haptica/Sources/Pattern.swift",
180 | "line": 26,
181 | "symbol": "Haptic.play(_:delay:)",
182 | "symbol_kind": "source.lang.swift.decl.function.method.static",
183 | "warning": "undocumented"
184 | },
185 | {
186 | "file": "/Users/home/Documents/Haptica/Sources/Pattern.swift",
187 | "line": 32,
188 | "symbol": "Note",
189 | "symbol_kind": "source.lang.swift.decl.enum",
190 | "warning": "undocumented"
191 | },
192 | {
193 | "file": "/Users/home/Documents/Haptica/Sources/Pattern.swift",
194 | "line": 33,
195 | "symbol": "Note.haptic(_:)",
196 | "symbol_kind": "source.lang.swift.decl.enumelement",
197 | "warning": "undocumented"
198 | },
199 | {
200 | "file": "/Users/home/Documents/Haptica/Sources/Pattern.swift",
201 | "line": 34,
202 | "symbol": "Note.wait(_:)",
203 | "symbol_kind": "source.lang.swift.decl.enumelement",
204 | "warning": "undocumented"
205 | }
206 | ],
207 | "source_directory": "/Users/home/Documents/Haptica"
208 | }
--------------------------------------------------------------------------------
/docs/Enums/HapticFeedbackStyle.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | HapticFeedbackStyle Enumeration Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | HapticFeedbackStyle Enumeration Reference
25 |
26 |
27 |
28 |
68 |
69 |
70 |
71 | HapticFeedbackStyle
72 |
73 |
74 |
public enum HapticFeedbackStyle : Int
75 |
76 |
77 |
78 | Undocumented
79 |
80 |
81 |
82 |
83 |
84 | -
85 |
86 |
87 |
88 |
89 | light
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
Undocumented
98 |
99 |
100 |
101 |
Declaration
102 |
103 |
Swift
104 |
case light
105 |
106 |
107 |
108 |
109 |
110 |
111 | -
112 |
113 |
114 |
115 |
116 | medium
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
Undocumented
125 |
126 |
127 |
128 |
Declaration
129 |
130 |
Swift
131 |
case medium
132 |
133 |
134 |
135 |
136 |
137 |
138 | -
139 |
140 |
141 |
142 |
143 | heavy
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
Undocumented
152 |
153 |
154 |
155 |
Declaration
156 |
157 |
Swift
158 |
case heavy
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
173 |
174 |
175 |
176 |
177 |
178 |
--------------------------------------------------------------------------------
/docs/Enums/HapticFeedbackType.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | HapticFeedbackType Enumeration Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | HapticFeedbackType Enumeration Reference
25 |
26 |
27 |
28 |
68 |
69 |
70 |
71 | HapticFeedbackType
72 |
73 |
74 |
public enum HapticFeedbackType : Int
75 |
76 |
77 |
78 | Undocumented
79 |
80 |
81 |
82 |
83 |
84 | -
85 |
86 |
87 |
88 |
89 | success
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
Undocumented
98 |
99 |
100 |
101 |
Declaration
102 |
103 |
Swift
104 |
case success
105 |
106 |
107 |
108 |
109 |
110 |
111 | -
112 |
113 |
114 |
115 |
116 | warning
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
Undocumented
125 |
126 |
127 |
128 |
Declaration
129 |
130 |
Swift
131 |
case warning
132 |
133 |
134 |
135 |
136 |
137 |
138 | -
139 |
140 |
141 |
142 |
143 | error
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
Undocumented
152 |
153 |
154 |
155 |
Declaration
156 |
157 |
Swift
158 |
case error
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
173 |
174 |
175 |
176 |
177 |
178 |
--------------------------------------------------------------------------------
/docs/docsets/Haptica.docset/Contents/Resources/Documents/Enums/HapticFeedbackStyle.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | HapticFeedbackStyle Enumeration Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | HapticFeedbackStyle Enumeration Reference
25 |
26 |
27 |
28 |
68 |
69 |
70 |
71 | HapticFeedbackStyle
72 |
73 |
74 |
public enum HapticFeedbackStyle : Int
75 |
76 |
77 |
78 | Undocumented
79 |
80 |
81 |
82 |
83 |
84 | -
85 |
86 |
87 |
88 |
89 | light
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
Undocumented
98 |
99 |
100 |
101 |
Declaration
102 |
103 |
Swift
104 |
case light
105 |
106 |
107 |
108 |
109 |
110 |
111 | -
112 |
113 |
114 |
115 |
116 | medium
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
Undocumented
125 |
126 |
127 |
128 |
Declaration
129 |
130 |
Swift
131 |
case medium
132 |
133 |
134 |
135 |
136 |
137 |
138 | -
139 |
140 |
141 |
142 |
143 | heavy
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
Undocumented
152 |
153 |
154 |
155 |
Declaration
156 |
157 |
Swift
158 |
case heavy
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
173 |
174 |
175 |
176 |
177 |
178 |
--------------------------------------------------------------------------------
/docs/docsets/Haptica.docset/Contents/Resources/Documents/Enums/HapticFeedbackType.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | HapticFeedbackType Enumeration Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | HapticFeedbackType Enumeration Reference
25 |
26 |
27 |
28 |
68 |
69 |
70 |
71 | HapticFeedbackType
72 |
73 |
74 |
public enum HapticFeedbackType : Int
75 |
76 |
77 |
78 | Undocumented
79 |
80 |
81 |
82 |
83 |
84 | -
85 |
86 |
87 |
88 |
89 | success
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
Undocumented
98 |
99 |
100 |
101 |
Declaration
102 |
103 |
Swift
104 |
case success
105 |
106 |
107 |
108 |
109 |
110 |
111 | -
112 |
113 |
114 |
115 |
116 | warning
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
Undocumented
125 |
126 |
127 |
128 |
Declaration
129 |
130 |
Swift
131 |
case warning
132 |
133 |
134 |
135 |
136 |
137 |
138 | -
139 |
140 |
141 |
142 |
143 | error
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
Undocumented
152 |
153 |
154 |
155 |
Declaration
156 |
157 |
Swift
158 |
case error
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
173 |
174 |
175 |
176 |
177 |
178 |
--------------------------------------------------------------------------------
/docs/css/jazzy.css:
--------------------------------------------------------------------------------
1 | html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {
2 | background: transparent;
3 | border: 0;
4 | margin: 0;
5 | outline: 0;
6 | padding: 0;
7 | vertical-align: baseline; }
8 |
9 | body {
10 | background-color: #f2f2f2;
11 | font-family: Helvetica, freesans, Arial, sans-serif;
12 | font-size: 14px;
13 | -webkit-font-smoothing: subpixel-antialiased;
14 | word-wrap: break-word; }
15 |
16 | h1, h2, h3 {
17 | margin-top: 0.8em;
18 | margin-bottom: 0.3em;
19 | font-weight: 100;
20 | color: black; }
21 |
22 | h1 {
23 | font-size: 2.5em; }
24 |
25 | h2 {
26 | font-size: 2em;
27 | border-bottom: 1px solid #e2e2e2; }
28 |
29 | h4 {
30 | font-size: 13px;
31 | line-height: 1.5;
32 | margin-top: 21px; }
33 |
34 | h5 {
35 | font-size: 1.1em; }
36 |
37 | h6 {
38 | font-size: 1.1em;
39 | color: #777; }
40 |
41 | .section-name {
42 | color: gray;
43 | display: block;
44 | font-family: Helvetica;
45 | font-size: 22px;
46 | font-weight: 100;
47 | margin-bottom: 15px; }
48 |
49 | pre, code {
50 | font: 0.95em Menlo, monospace;
51 | color: #777;
52 | word-wrap: normal; }
53 |
54 | p code, li code {
55 | background-color: #eee;
56 | padding: 2px 4px;
57 | border-radius: 4px; }
58 |
59 | a {
60 | color: #0088cc;
61 | text-decoration: none; }
62 |
63 | ul {
64 | padding-left: 15px; }
65 |
66 | li {
67 | line-height: 1.8em; }
68 |
69 | img {
70 | max-width: 100%; }
71 |
72 | blockquote {
73 | margin-left: 0;
74 | padding: 0 10px;
75 | border-left: 4px solid #ccc; }
76 |
77 | .content-wrapper {
78 | margin: 0 auto;
79 | width: 980px; }
80 |
81 | header {
82 | font-size: 0.85em;
83 | line-height: 26px;
84 | background-color: #414141;
85 | position: fixed;
86 | width: 100%;
87 | z-index: 1; }
88 | header img {
89 | padding-right: 6px;
90 | vertical-align: -4px;
91 | height: 16px; }
92 | header a {
93 | color: #fff; }
94 | header p {
95 | float: left;
96 | color: #999; }
97 | header .header-right {
98 | float: right;
99 | margin-left: 16px; }
100 |
101 | #breadcrumbs {
102 | background-color: #f2f2f2;
103 | height: 27px;
104 | padding-top: 17px;
105 | position: fixed;
106 | width: 100%;
107 | z-index: 1;
108 | margin-top: 26px; }
109 | #breadcrumbs #carat {
110 | height: 10px;
111 | margin: 0 5px; }
112 |
113 | .sidebar {
114 | background-color: #f9f9f9;
115 | border: 1px solid #e2e2e2;
116 | overflow-y: auto;
117 | overflow-x: hidden;
118 | position: fixed;
119 | top: 70px;
120 | bottom: 0;
121 | width: 230px;
122 | word-wrap: normal; }
123 |
124 | .nav-groups {
125 | list-style-type: none;
126 | background: #fff;
127 | padding-left: 0; }
128 |
129 | .nav-group-name {
130 | border-bottom: 1px solid #e2e2e2;
131 | font-size: 1.1em;
132 | font-weight: 100;
133 | padding: 15px 0 15px 20px; }
134 | .nav-group-name > a {
135 | color: #333; }
136 |
137 | .nav-group-tasks {
138 | margin-top: 5px; }
139 |
140 | .nav-group-task {
141 | font-size: 0.9em;
142 | list-style-type: none;
143 | white-space: nowrap; }
144 | .nav-group-task a {
145 | color: #888; }
146 |
147 | .main-content {
148 | background-color: #fff;
149 | border: 1px solid #e2e2e2;
150 | margin-left: 246px;
151 | position: absolute;
152 | overflow: hidden;
153 | padding-bottom: 60px;
154 | top: 70px;
155 | width: 734px; }
156 | .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote {
157 | margin-bottom: 1em; }
158 | .main-content p {
159 | line-height: 1.8em; }
160 | .main-content section .section:first-child {
161 | margin-top: 0;
162 | padding-top: 0; }
163 | .main-content section .task-group-section .task-group:first-of-type {
164 | padding-top: 10px; }
165 | .main-content section .task-group-section .task-group:first-of-type .section-name {
166 | padding-top: 15px; }
167 | .main-content section .heading:before {
168 | content: "";
169 | display: block;
170 | padding-top: 70px;
171 | margin: -70px 0 0; }
172 |
173 | .section {
174 | padding: 0 25px; }
175 |
176 | .highlight {
177 | background-color: #eee;
178 | padding: 10px 12px;
179 | border: 1px solid #e2e2e2;
180 | border-radius: 4px;
181 | overflow-x: auto; }
182 |
183 | .declaration .highlight {
184 | overflow-x: initial;
185 | padding: 0 40px 40px 0;
186 | margin-bottom: -25px;
187 | background-color: transparent;
188 | border: none; }
189 |
190 | .section-name {
191 | margin: 0;
192 | margin-left: 18px; }
193 |
194 | .task-group-section {
195 | padding-left: 6px;
196 | border-top: 1px solid #e2e2e2; }
197 |
198 | .task-group {
199 | padding-top: 0px; }
200 |
201 | .task-name-container a[name]:before {
202 | content: "";
203 | display: block;
204 | padding-top: 70px;
205 | margin: -70px 0 0; }
206 |
207 | .item {
208 | padding-top: 8px;
209 | width: 100%;
210 | list-style-type: none; }
211 | .item a[name]:before {
212 | content: "";
213 | display: block;
214 | padding-top: 70px;
215 | margin: -70px 0 0; }
216 | .item code {
217 | background-color: transparent;
218 | padding: 0; }
219 | .item .token {
220 | padding-left: 3px;
221 | margin-left: 15px;
222 | font-size: 11.9px; }
223 | .item .declaration-note {
224 | font-size: .85em;
225 | color: gray;
226 | font-style: italic; }
227 |
228 | .pointer-container {
229 | border-bottom: 1px solid #e2e2e2;
230 | left: -23px;
231 | padding-bottom: 13px;
232 | position: relative;
233 | width: 110%; }
234 |
235 | .pointer {
236 | background: #f9f9f9;
237 | border-left: 1px solid #e2e2e2;
238 | border-top: 1px solid #e2e2e2;
239 | height: 12px;
240 | left: 21px;
241 | top: -7px;
242 | -webkit-transform: rotate(45deg);
243 | -moz-transform: rotate(45deg);
244 | -o-transform: rotate(45deg);
245 | transform: rotate(45deg);
246 | position: absolute;
247 | width: 12px; }
248 |
249 | .height-container {
250 | display: none;
251 | left: -25px;
252 | padding: 0 25px;
253 | position: relative;
254 | width: 100%;
255 | overflow: hidden; }
256 | .height-container .section {
257 | background: #f9f9f9;
258 | border-bottom: 1px solid #e2e2e2;
259 | left: -25px;
260 | position: relative;
261 | width: 100%;
262 | padding-top: 10px;
263 | padding-bottom: 5px; }
264 |
265 | .aside, .language {
266 | padding: 6px 12px;
267 | margin: 12px 0;
268 | border-left: 5px solid #dddddd;
269 | overflow-y: hidden; }
270 | .aside .aside-title, .language .aside-title {
271 | font-size: 9px;
272 | letter-spacing: 2px;
273 | text-transform: uppercase;
274 | padding-bottom: 0;
275 | margin: 0;
276 | color: #aaa;
277 | -webkit-user-select: none; }
278 | .aside p:last-child, .language p:last-child {
279 | margin-bottom: 0; }
280 |
281 | .language {
282 | border-left: 5px solid #cde9f4; }
283 | .language .aside-title {
284 | color: #4b8afb; }
285 |
286 | .aside-warning {
287 | border-left: 5px solid #ff6666; }
288 | .aside-warning .aside-title {
289 | color: #ff0000; }
290 |
291 | .graybox {
292 | border-collapse: collapse;
293 | width: 100%; }
294 | .graybox p {
295 | margin: 0;
296 | word-break: break-word;
297 | min-width: 50px; }
298 | .graybox td {
299 | border: 1px solid #e2e2e2;
300 | padding: 5px 25px 5px 10px;
301 | vertical-align: middle; }
302 | .graybox tr td:first-of-type {
303 | text-align: right;
304 | padding: 7px;
305 | vertical-align: top;
306 | word-break: normal;
307 | width: 40px; }
308 |
309 | .slightly-smaller {
310 | font-size: 0.9em; }
311 |
312 | #footer {
313 | position: absolute;
314 | bottom: 10px;
315 | margin-left: 25px; }
316 | #footer p {
317 | margin: 0;
318 | color: #aaa;
319 | font-size: 0.8em; }
320 |
321 | html.dash header, html.dash #breadcrumbs, html.dash .sidebar {
322 | display: none; }
323 | html.dash .main-content {
324 | width: 980px;
325 | margin-left: 0;
326 | border: none;
327 | width: 100%;
328 | top: 0;
329 | padding-bottom: 0; }
330 | html.dash .height-container {
331 | display: block; }
332 | html.dash .item .token {
333 | margin-left: 0; }
334 | html.dash .content-wrapper {
335 | width: auto; }
336 | html.dash #footer {
337 | position: static; }
338 |
--------------------------------------------------------------------------------
/docs/docsets/Haptica.docset/Contents/Resources/Documents/css/jazzy.css:
--------------------------------------------------------------------------------
1 | html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {
2 | background: transparent;
3 | border: 0;
4 | margin: 0;
5 | outline: 0;
6 | padding: 0;
7 | vertical-align: baseline; }
8 |
9 | body {
10 | background-color: #f2f2f2;
11 | font-family: Helvetica, freesans, Arial, sans-serif;
12 | font-size: 14px;
13 | -webkit-font-smoothing: subpixel-antialiased;
14 | word-wrap: break-word; }
15 |
16 | h1, h2, h3 {
17 | margin-top: 0.8em;
18 | margin-bottom: 0.3em;
19 | font-weight: 100;
20 | color: black; }
21 |
22 | h1 {
23 | font-size: 2.5em; }
24 |
25 | h2 {
26 | font-size: 2em;
27 | border-bottom: 1px solid #e2e2e2; }
28 |
29 | h4 {
30 | font-size: 13px;
31 | line-height: 1.5;
32 | margin-top: 21px; }
33 |
34 | h5 {
35 | font-size: 1.1em; }
36 |
37 | h6 {
38 | font-size: 1.1em;
39 | color: #777; }
40 |
41 | .section-name {
42 | color: gray;
43 | display: block;
44 | font-family: Helvetica;
45 | font-size: 22px;
46 | font-weight: 100;
47 | margin-bottom: 15px; }
48 |
49 | pre, code {
50 | font: 0.95em Menlo, monospace;
51 | color: #777;
52 | word-wrap: normal; }
53 |
54 | p code, li code {
55 | background-color: #eee;
56 | padding: 2px 4px;
57 | border-radius: 4px; }
58 |
59 | a {
60 | color: #0088cc;
61 | text-decoration: none; }
62 |
63 | ul {
64 | padding-left: 15px; }
65 |
66 | li {
67 | line-height: 1.8em; }
68 |
69 | img {
70 | max-width: 100%; }
71 |
72 | blockquote {
73 | margin-left: 0;
74 | padding: 0 10px;
75 | border-left: 4px solid #ccc; }
76 |
77 | .content-wrapper {
78 | margin: 0 auto;
79 | width: 980px; }
80 |
81 | header {
82 | font-size: 0.85em;
83 | line-height: 26px;
84 | background-color: #414141;
85 | position: fixed;
86 | width: 100%;
87 | z-index: 1; }
88 | header img {
89 | padding-right: 6px;
90 | vertical-align: -4px;
91 | height: 16px; }
92 | header a {
93 | color: #fff; }
94 | header p {
95 | float: left;
96 | color: #999; }
97 | header .header-right {
98 | float: right;
99 | margin-left: 16px; }
100 |
101 | #breadcrumbs {
102 | background-color: #f2f2f2;
103 | height: 27px;
104 | padding-top: 17px;
105 | position: fixed;
106 | width: 100%;
107 | z-index: 1;
108 | margin-top: 26px; }
109 | #breadcrumbs #carat {
110 | height: 10px;
111 | margin: 0 5px; }
112 |
113 | .sidebar {
114 | background-color: #f9f9f9;
115 | border: 1px solid #e2e2e2;
116 | overflow-y: auto;
117 | overflow-x: hidden;
118 | position: fixed;
119 | top: 70px;
120 | bottom: 0;
121 | width: 230px;
122 | word-wrap: normal; }
123 |
124 | .nav-groups {
125 | list-style-type: none;
126 | background: #fff;
127 | padding-left: 0; }
128 |
129 | .nav-group-name {
130 | border-bottom: 1px solid #e2e2e2;
131 | font-size: 1.1em;
132 | font-weight: 100;
133 | padding: 15px 0 15px 20px; }
134 | .nav-group-name > a {
135 | color: #333; }
136 |
137 | .nav-group-tasks {
138 | margin-top: 5px; }
139 |
140 | .nav-group-task {
141 | font-size: 0.9em;
142 | list-style-type: none;
143 | white-space: nowrap; }
144 | .nav-group-task a {
145 | color: #888; }
146 |
147 | .main-content {
148 | background-color: #fff;
149 | border: 1px solid #e2e2e2;
150 | margin-left: 246px;
151 | position: absolute;
152 | overflow: hidden;
153 | padding-bottom: 60px;
154 | top: 70px;
155 | width: 734px; }
156 | .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote {
157 | margin-bottom: 1em; }
158 | .main-content p {
159 | line-height: 1.8em; }
160 | .main-content section .section:first-child {
161 | margin-top: 0;
162 | padding-top: 0; }
163 | .main-content section .task-group-section .task-group:first-of-type {
164 | padding-top: 10px; }
165 | .main-content section .task-group-section .task-group:first-of-type .section-name {
166 | padding-top: 15px; }
167 | .main-content section .heading:before {
168 | content: "";
169 | display: block;
170 | padding-top: 70px;
171 | margin: -70px 0 0; }
172 |
173 | .section {
174 | padding: 0 25px; }
175 |
176 | .highlight {
177 | background-color: #eee;
178 | padding: 10px 12px;
179 | border: 1px solid #e2e2e2;
180 | border-radius: 4px;
181 | overflow-x: auto; }
182 |
183 | .declaration .highlight {
184 | overflow-x: initial;
185 | padding: 0 40px 40px 0;
186 | margin-bottom: -25px;
187 | background-color: transparent;
188 | border: none; }
189 |
190 | .section-name {
191 | margin: 0;
192 | margin-left: 18px; }
193 |
194 | .task-group-section {
195 | padding-left: 6px;
196 | border-top: 1px solid #e2e2e2; }
197 |
198 | .task-group {
199 | padding-top: 0px; }
200 |
201 | .task-name-container a[name]:before {
202 | content: "";
203 | display: block;
204 | padding-top: 70px;
205 | margin: -70px 0 0; }
206 |
207 | .item {
208 | padding-top: 8px;
209 | width: 100%;
210 | list-style-type: none; }
211 | .item a[name]:before {
212 | content: "";
213 | display: block;
214 | padding-top: 70px;
215 | margin: -70px 0 0; }
216 | .item code {
217 | background-color: transparent;
218 | padding: 0; }
219 | .item .token {
220 | padding-left: 3px;
221 | margin-left: 15px;
222 | font-size: 11.9px; }
223 | .item .declaration-note {
224 | font-size: .85em;
225 | color: gray;
226 | font-style: italic; }
227 |
228 | .pointer-container {
229 | border-bottom: 1px solid #e2e2e2;
230 | left: -23px;
231 | padding-bottom: 13px;
232 | position: relative;
233 | width: 110%; }
234 |
235 | .pointer {
236 | background: #f9f9f9;
237 | border-left: 1px solid #e2e2e2;
238 | border-top: 1px solid #e2e2e2;
239 | height: 12px;
240 | left: 21px;
241 | top: -7px;
242 | -webkit-transform: rotate(45deg);
243 | -moz-transform: rotate(45deg);
244 | -o-transform: rotate(45deg);
245 | transform: rotate(45deg);
246 | position: absolute;
247 | width: 12px; }
248 |
249 | .height-container {
250 | display: none;
251 | left: -25px;
252 | padding: 0 25px;
253 | position: relative;
254 | width: 100%;
255 | overflow: hidden; }
256 | .height-container .section {
257 | background: #f9f9f9;
258 | border-bottom: 1px solid #e2e2e2;
259 | left: -25px;
260 | position: relative;
261 | width: 100%;
262 | padding-top: 10px;
263 | padding-bottom: 5px; }
264 |
265 | .aside, .language {
266 | padding: 6px 12px;
267 | margin: 12px 0;
268 | border-left: 5px solid #dddddd;
269 | overflow-y: hidden; }
270 | .aside .aside-title, .language .aside-title {
271 | font-size: 9px;
272 | letter-spacing: 2px;
273 | text-transform: uppercase;
274 | padding-bottom: 0;
275 | margin: 0;
276 | color: #aaa;
277 | -webkit-user-select: none; }
278 | .aside p:last-child, .language p:last-child {
279 | margin-bottom: 0; }
280 |
281 | .language {
282 | border-left: 5px solid #cde9f4; }
283 | .language .aside-title {
284 | color: #4b8afb; }
285 |
286 | .aside-warning {
287 | border-left: 5px solid #ff6666; }
288 | .aside-warning .aside-title {
289 | color: #ff0000; }
290 |
291 | .graybox {
292 | border-collapse: collapse;
293 | width: 100%; }
294 | .graybox p {
295 | margin: 0;
296 | word-break: break-word;
297 | min-width: 50px; }
298 | .graybox td {
299 | border: 1px solid #e2e2e2;
300 | padding: 5px 25px 5px 10px;
301 | vertical-align: middle; }
302 | .graybox tr td:first-of-type {
303 | text-align: right;
304 | padding: 7px;
305 | vertical-align: top;
306 | word-break: normal;
307 | width: 40px; }
308 |
309 | .slightly-smaller {
310 | font-size: 0.9em; }
311 |
312 | #footer {
313 | position: absolute;
314 | bottom: 10px;
315 | margin-left: 25px; }
316 | #footer p {
317 | margin: 0;
318 | color: #aaa;
319 | font-size: 0.8em; }
320 |
321 | html.dash header, html.dash #breadcrumbs, html.dash .sidebar {
322 | display: none; }
323 | html.dash .main-content {
324 | width: 980px;
325 | margin-left: 0;
326 | border: none;
327 | width: 100%;
328 | top: 0;
329 | padding-bottom: 0; }
330 | html.dash .height-container {
331 | display: block; }
332 | html.dash .item .token {
333 | margin-left: 0; }
334 | html.dash .content-wrapper {
335 | width: auto; }
336 | html.dash #footer {
337 | position: static; }
338 |
--------------------------------------------------------------------------------
/docs/Enums.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Enumerations Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | Haptica Reference
23 |
24 | Enumerations Reference
25 |
26 |
27 |
28 |
68 |
69 |
70 |
71 | Enumerations
72 | The following enumerations are available globally.
73 |
74 |
75 |
76 |
77 |
78 | -
79 |
86 |
87 |
88 |
89 |
90 |
91 |
Undocumented
92 |
93 |
See more
94 |
95 |
96 |
Declaration
97 |
98 |
Swift
99 |
public enum HapticFeedbackStyle : Int
100 |
101 |
102 |
103 |
104 |
105 |
106 | -
107 |
114 |
115 |
116 |
117 |
118 |
119 |
Undocumented
120 |
121 |
See more
122 |
123 |
124 |
Declaration
125 |
126 |
Swift
127 |
public enum HapticFeedbackType : Int
128 |
129 |
130 |
131 |
132 |
133 |
134 | -
135 |
136 |
137 |
138 |
139 | Haptic
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
Undocumented
148 |
149 |
See more
150 |
151 |
152 |
Declaration
153 |
154 |
Swift
155 |
public enum Haptic
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 | -
167 |
168 |
169 |
170 |
171 | Note
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
Undocumented
180 |
181 |
See more
182 |
183 |
184 |
Declaration
185 |
186 |
Swift
187 |
public enum Note
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
202 |
203 |
204 |
205 |
206 |
207 |
--------------------------------------------------------------------------------