├── AccessibilitySuite
└── AccessibilitySuite
│ ├── Readme.md
│ ├── en.lproj
│ └── InfoPlist.strings
│ ├── Images
│ ├── Shapes~ipad.png
│ ├── Shapes@2x~ipad.png
│ ├── Shapes~iphone.png
│ ├── Shapes@2x~iphone.png
│ ├── glossyButton-normal.png
│ ├── glossyButton-disabled.png
│ ├── glossyButton-highlighted.png
│ ├── glossyButtonWithText-normal.png
│ ├── SegmentedControlFirstTabImage.png
│ ├── glossyButtonWithText-disabled.png
│ ├── SegmentedControlFirstTabImage@2x.png
│ ├── SegmentedControlSecondTabImage.png
│ ├── glossyButtonWithText-highlighted.png
│ ├── SegmentedControlFirstTabImage copy.png
│ ├── SegmentedControlSecondTabImage@2x.png
│ ├── SegmentedControlFirstTabImage@2x copy.png
│ ├── SegmentedControlSecondTabImage copy.png
│ └── SegmentedControlSecondTabImage@2x copy.png
│ ├── main.m
│ ├── AccessibilitySuite-Prefix.pch
│ ├── ASPageSlider.h
│ ├── ASSliderViewController.h
│ ├── ASViewController.h
│ ├── ASButtonViewController.h
│ ├── ASContainerViewController.h
│ ├── ASAccessibilityElement.h
│ ├── ASRootViewController.h
│ ├── ASAccessibleImageView.h
│ ├── ASAppDelegate.h
│ ├── ASViewController.m
│ ├── ASCustomizedPageSlider.h
│ ├── ASSegmentedControlViewController.h
│ ├── AccessibilitySuite-Info.plist
│ ├── ASAppDelegate.m
│ ├── ASSliderViewController.m
│ ├── ASAccessibilityElement.m
│ ├── ASSegmentedControlViewController.m
│ ├── ASPageSlider.m
│ ├── ASContainerViewController.m
│ ├── ASAccessibleImageView.m
│ ├── ASButtonViewController.m
│ ├── ASRootViewController.m
│ ├── ASCustomizedPageSlider.m
│ ├── ASSliderViewController~ipad.xib
│ ├── ASSliderViewController~iphone.xib
│ ├── ASSegmentedControlViewController~ipad.xib
│ └── ASSegmentedControlViewController~iphone.xib
└── AccessibilityReadingContent
├── ReadingContent
├── en.lproj
│ └── InfoPlist.strings
├── main.m
├── ReadingContent-Prefix.pch
├── Images.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── LaunchImage.launchimage
│ │ └── Contents.json
├── AXAppDelegate.m
├── AXTextContainerView.h
├── AXPagedViewController.h
├── AXAppDelegate.h
├── AXTextReadingContentView.h
├── AXTextView.h
├── AXTextView_Internal.h
├── AXTextViewController.h
├── ReadingContent-Info.plist
├── AXTextViewController.m
├── AXTextView.m
├── AXTextContainerView.m
├── AXPagedViewController.m
├── AXTextReadingContentView.m
└── Main.storyboard
└── ReadingContent.xcodeproj
├── xcshareddata
└── xcdebugger
│ └── Breakpoints_v2.xcbkptlist
└── project.pbxproj
/AccessibilitySuite/AccessibilitySuite/Readme.md:
--------------------------------------------------------------------------------
1 | ##Accessibility Suite
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/Shapes~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/Shapes~ipad.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/Shapes@2x~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/Shapes@2x~ipad.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/Shapes~iphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/Shapes~iphone.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/Shapes@2x~iphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/Shapes@2x~iphone.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/glossyButton-normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/glossyButton-normal.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/glossyButton-disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/glossyButton-disabled.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/glossyButton-highlighted.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/glossyButton-highlighted.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/glossyButtonWithText-normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/glossyButtonWithText-normal.png
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent.xcodeproj/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlFirstTabImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlFirstTabImage.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/glossyButtonWithText-disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/glossyButtonWithText-disabled.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlFirstTabImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlFirstTabImage@2x.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlSecondTabImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlSecondTabImage.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/glossyButtonWithText-highlighted.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/glossyButtonWithText-highlighted.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlFirstTabImage copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlFirstTabImage copy.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlSecondTabImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlSecondTabImage@2x.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlFirstTabImage@2x copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlFirstTabImage@2x copy.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlSecondTabImage copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlSecondTabImage copy.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlSecondTabImage@2x copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rustle/Accessibility/HEAD/AccessibilitySuite/AccessibilitySuite/Images/SegmentedControlSecondTabImage@2x copy.png
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // AccessibilitySuite
4 | //
5 | // Created by Doug Russell
6 | // Copyright (c) Doug Russell. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "ASAppDelegate.h"
11 |
12 | int main(int argc, char *argv[])
13 | {
14 | @autoreleasepool {
15 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([ASAppDelegate class]));
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // ReadingContent
4 | //
5 | // Created by Doug Russell on 9/12/13.
6 | // Copyright (c) 2013 Doug Russell. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "AXAppDelegate.h"
12 |
13 | int main(int argc, char * argv[])
14 | {
15 | @autoreleasepool {
16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AXAppDelegate class]));
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/ReadingContent-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header
3 | //
4 | // The contents of this file are implicitly included at the beginning of every source file.
5 | //
6 |
7 | #import
8 |
9 | #ifndef __IPHONE_3_0
10 | #warning "This project uses features only available in iOS SDK 3.0 and later."
11 | #endif
12 |
13 | #ifdef __OBJC__
14 | #import
15 | #import
16 | #endif
17 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "40x40",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "60x60",
16 | "scale" : "2x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/AccessibilitySuite-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header for all source files of the 'AccessibilitySuite' target in the 'AccessibilitySuite' project
3 | //
4 |
5 | #import
6 |
7 | #ifndef __IPHONE_5_0
8 | #warning "This project uses features only available in iOS SDK 5.0 and later."
9 | #endif
10 |
11 | #ifdef __OBJC__
12 | #import
13 | #import
14 | #endif
15 |
16 | #define ISIPAD [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/Images.xcassets/LaunchImage.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "orientation" : "portrait",
5 | "idiom" : "iphone",
6 | "extent" : "full-screen",
7 | "minimum-system-version" : "7.0",
8 | "scale" : "2x"
9 | },
10 | {
11 | "orientation" : "portrait",
12 | "idiom" : "iphone",
13 | "subtype" : "retina4",
14 | "extent" : "full-screen",
15 | "minimum-system-version" : "7.0",
16 | "scale" : "2x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASPageSlider.h:
--------------------------------------------------------------------------------
1 | //
2 | // ASPageSlider.h
3 | //
4 | // Created by Doug Russell
5 | // Copyright (c) 2012 Doug Russell. All rights reserved.
6 | //
7 | // Licensed under the Apache License, Version 2.0 (the "License");
8 | // you may not use this file except in compliance with the License.
9 | // You may obtain a copy of the License at
10 | //
11 | // http://www.apache.org/licenses/LICENSE-2.0
12 | //
13 | // Unless required by applicable law or agreed to in writing, software
14 | // distributed under the License is distributed on an "AS IS" BASIS,
15 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | // See the License for the specific language governing permissions and
17 | // limitations under the License.
18 | //
19 |
20 | #import
21 |
22 | @interface ASPageSlider : UISlider
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/AXAppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AXAppDelegate.m
3 | // ReadingContent
4 | //
5 | // Created by Doug Russell on 9/12/13.
6 | // Copyright (c) 2013 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "AXAppDelegate.h"
22 |
23 | @implementation AXAppDelegate
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASSliderViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ASSliderViewController.h
3 | //
4 | // Created by Doug Russell
5 | // Copyright (c) 2012 Doug Russell. All rights reserved.
6 | //
7 | // Licensed under the Apache License, Version 2.0 (the "License");
8 | // you may not use this file except in compliance with the License.
9 | // You may obtain a copy of the License at
10 | //
11 | // http://www.apache.org/licenses/LICENSE-2.0
12 | //
13 | // Unless required by applicable law or agreed to in writing, software
14 | // distributed under the License is distributed on an "AS IS" BASIS,
15 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | // See the License for the specific language governing permissions and
17 | // limitations under the License.
18 | //
19 |
20 | #import "ASViewController.h"
21 |
22 | @interface ASSliderViewController : ASViewController
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ASViewController.h
3 | // AccessibilitySuite
4 | //
5 | // Created by Doug Russell
6 | // Copyright (c) Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import
22 |
23 | @interface ASViewController : UIViewController
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/AXTextContainerView.h:
--------------------------------------------------------------------------------
1 | //
2 | // AXTextContainerView.h
3 | // ReadingContent
4 | //
5 | // Created by Doug Russell on 9/12/13.
6 | // Copyright (c) 2013 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "AXTextView.h"
22 |
23 | @interface AXTextContainerView : AXTextView
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASButtonViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ASButtonViewController.h
3 | // AccessibilitySuite
4 | //
5 | // Created by Doug Russell
6 | // Copyright (c) 2012 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "ASViewController.h"
22 |
23 | @interface ASButtonViewController : ASViewController
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/AXPagedViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // AXPagedViewController.h
3 | // ReadingContent
4 | //
5 | // Created by Doug Russell on 9/12/13.
6 | // Copyright (c) 2013 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import
22 |
23 | @interface AXPagedViewController : UIViewController
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASContainerViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ASContainerViewController.h
3 | // AccessibilitySuite
4 | //
5 | // Created by Doug Russell
6 | // Copyright (c) 2012 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "ASViewController.h"
22 |
23 | @interface ASContainerViewController : ASViewController
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASAccessibilityElement.h:
--------------------------------------------------------------------------------
1 | //
2 | // ASAccessibilityElement.h
3 | //
4 | // Created by Doug Russell
5 | // Copyright (c) 2012 Doug Russell. All rights reserved.
6 | //
7 | // Licensed under the Apache License, Version 2.0 (the "License");
8 | // you may not use this file except in compliance with the License.
9 | // You may obtain a copy of the License at
10 | //
11 | // http://www.apache.org/licenses/LICENSE-2.0
12 | //
13 | // Unless required by applicable law or agreed to in writing, software
14 | // distributed under the License is distributed on an "AS IS" BASIS,
15 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | // See the License for the specific language governing permissions and
17 | // limitations under the License.
18 | //
19 |
20 | #import
21 |
22 | @interface ASAccessibilityElement : UIAccessibilityElement
23 |
24 | @property (assign, nonatomic) CGRect frameRelativeToContainer;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/AXAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AXAppDelegate.h
3 | // ReadingContent
4 | //
5 | // Created by Doug Russell on 9/12/13.
6 | // Copyright (c) 2013 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import
22 |
23 | @interface AXAppDelegate : UIResponder
24 |
25 | @property (strong, nonatomic) UIWindow *window;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/AXTextReadingContentView.h:
--------------------------------------------------------------------------------
1 | //
2 | // AXTextReadingContentView.h
3 | // ReadingContent
4 | //
5 | // Created by Doug Russell on 9/12/13.
6 | // Copyright (c) 2013 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "AXTextView.h"
22 |
23 | @interface AXTextReadingContentView : AXTextView
24 |
25 | @property (nonatomic) bool causesPageTurn;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/AXTextView.h:
--------------------------------------------------------------------------------
1 | //
2 | // AXTextView.h
3 | // ReadingContent
4 | //
5 | // Created by Doug Russell on 9/12/13.
6 | // Copyright (c) 2013 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import
22 |
23 | @interface AXTextView : UIView
24 |
25 | @property (nonatomic, assign) UIEdgeInsets textInsets;
26 | @property (nonatomic) NSAttributedString *attributedText;
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASRootViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ASRootViewController.h
3 | // AccessibilitySuite
4 | //
5 | // Created by Doug Russell
6 | // Copyright (c) Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "ASViewController.h"
22 |
23 | @interface ASRootViewController : ASViewController
24 |
25 | @property (nonatomic) UITableView *tableView;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASAccessibleImageView.h:
--------------------------------------------------------------------------------
1 | //
2 | // ASAccessibleImageView.h
3 | //
4 | // Created by Doug Russell
5 | // Copyright (c) 2012 Doug Russell. All rights reserved.
6 | //
7 | // Licensed under the Apache License, Version 2.0 (the "License");
8 | // you may not use this file except in compliance with the License.
9 | // You may obtain a copy of the License at
10 | //
11 | // http://www.apache.org/licenses/LICENSE-2.0
12 | //
13 | // Unless required by applicable law or agreed to in writing, software
14 | // distributed under the License is distributed on an "AS IS" BASIS,
15 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | // See the License for the specific language governing permissions and
17 | // limitations under the License.
18 | //
19 |
20 | #import
21 |
22 | @interface ASAccessibleImageView : UIImageView
23 |
24 | - (void)addAccessibilityElement:(NSString *)label hint:(NSString *)hint frame:(CGRect)frame;
25 | - (void)clearAccessibilityElements;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // ASAppDelegate.h
3 | // AccessibilitySuite
4 | //
5 | // Created by Doug Russell
6 | // Copyright (c) Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import
22 |
23 | @interface ASAppDelegate : UIResponder
24 |
25 | @property (nonatomic) UIWindow *window;
26 | @property (nonatomic) UINavigationController *navigationController;
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/AXTextView_Internal.h:
--------------------------------------------------------------------------------
1 | //
2 | // AXTextView_Internal.h
3 | // ReadingContent
4 | //
5 | // Created by Doug Russell on 9/12/13.
6 | // Copyright (c) 2013 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "AXTextView.h"
22 |
23 | @import CoreText;
24 |
25 | @interface AXTextView ()
26 |
27 | @property (nonatomic) __attribute__((NSObject)) CTFrameRef frameRef;
28 |
29 | - (void)ax_reset;
30 |
31 | @end
32 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ASViewController.m
3 | // AccessibilitySuite
4 | //
5 | // Created by Doug Russell
6 | // Copyright (c) Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "ASViewController.h"
22 |
23 | @interface ASViewController ()
24 |
25 | @end
26 |
27 | @implementation ASViewController
28 |
29 | - (id)init
30 | {
31 | self = [super initWithNibName:nil bundle:nil];
32 | if (self)
33 | {
34 |
35 | }
36 | return self;
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/AXTextViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // AXTextViewController.h
3 | // ReadingContent
4 | //
5 | // Created by Doug Russell on 9/12/13.
6 | // Copyright (c) 2013 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import
22 | #import "AXTextView.h"
23 |
24 | @interface AXTextViewController : UIViewController
25 |
26 | @property (nonatomic, weak) IBOutlet AXTextView *textView;
27 | @property (nonatomic) NSAttributedString *text;
28 | @property (nonatomic) bool isLastPage;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASCustomizedPageSlider.h:
--------------------------------------------------------------------------------
1 | //
2 | // ASCustomizedPageSlider.h
3 | //
4 | // Created by Doug Russell
5 | // Copyright (c) 2012 Doug Russell. All rights reserved.
6 | //
7 | // Licensed under the Apache License, Version 2.0 (the "License");
8 | // you may not use this file except in compliance with the License.
9 | // You may obtain a copy of the License at
10 | //
11 | // http://www.apache.org/licenses/LICENSE-2.0
12 | //
13 | // Unless required by applicable law or agreed to in writing, software
14 | // distributed under the License is distributed on an "AS IS" BASIS,
15 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | // See the License for the specific language governing permissions and
17 | // limitations under the License.
18 | //
19 |
20 | #import
21 |
22 | // IMPORTANT: Don't actually use this class, it's just a demonstration of how to make a custom slider accessible. Use UISlider, it's much better.
23 |
24 | @interface ASCustomizedPageSlider : UIControl
25 |
26 | @property (nonatomic) float value;
27 | @property (nonatomic) float minValue;
28 | @property (nonatomic) float maxValue;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASSegmentedControlViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ASSegmentedControlViewController.h
3 | // AccessibilitySuite
4 | //
5 | // Created by Doug Russell
6 | // Copyright (c) Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "ASViewController.h"
22 |
23 | @interface ASSegmentedControlViewController : ASViewController
24 |
25 | @property (weak, nonatomic) IBOutlet UISegmentedControl *segmentedControlText;
26 | @property (weak, nonatomic) IBOutlet UISegmentedControl *segmentedControlImages;
27 | @property (weak, nonatomic) IBOutlet UISegmentedControl *segmentedControlAccessibleImages;
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/ReadingContent-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | AX.${PRODUCT_NAME:rfc1034identifier}
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.0
25 | LSRequiresIPhoneOS
26 |
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/AccessibilitySuite-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | com.DougRussell.${PRODUCT_NAME:rfc1034identifier}
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.0
25 | LSRequiresIPhoneOS
26 |
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 |
35 | UISupportedInterfaceOrientations~ipad
36 |
37 | UIInterfaceOrientationPortrait
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASAppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // ASAppDelegate.m
3 | // AccessibilitySuite
4 | //
5 | // Created by Doug Russell
6 | // Copyright (c) Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "ASAppDelegate.h"
22 | #import "ASRootViewController.h"
23 |
24 | @implementation ASAppDelegate
25 |
26 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
27 | {
28 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
29 | self.window.backgroundColor = [UIColor whiteColor];
30 | self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[ASRootViewController new]];
31 | [self.window makeKeyAndVisible];
32 | return YES;
33 | }
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASSliderViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ASSliderViewController.m
3 | //
4 | // Created by Doug Russell
5 | // Copyright (c) 2012 Doug Russell. All rights reserved.
6 | //
7 | // Licensed under the Apache License, Version 2.0 (the "License");
8 | // you may not use this file except in compliance with the License.
9 | // You may obtain a copy of the License at
10 | //
11 | // http://www.apache.org/licenses/LICENSE-2.0
12 | //
13 | // Unless required by applicable law or agreed to in writing, software
14 | // distributed under the License is distributed on an "AS IS" BASIS,
15 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | // See the License for the specific language governing permissions and
17 | // limitations under the License.
18 | //
19 |
20 | #import "ASSliderViewController.h"
21 | #import "ASPageSlider.h"
22 | #import "ASCustomizedPageSlider.h"
23 |
24 | @interface ASSliderViewController ()
25 | @property (weak, nonatomic) IBOutlet UISlider *stockSlider;
26 | @property (weak, nonatomic) IBOutlet ASPageSlider *pageSlider;
27 | @property (weak, nonatomic) IBOutlet ASCustomizedPageSlider *customPageSlider;
28 | - (IBAction)valueChanged:(id)sender;
29 | @end
30 |
31 | @implementation ASSliderViewController
32 |
33 | #pragma mark - Init/Dealloc
34 |
35 | - (id)init
36 | {
37 | self = [super init];
38 | if (self)
39 | {
40 | self.title = @"Sliders";
41 | }
42 | return self;
43 | }
44 |
45 | - (IBAction)valueChanged:(id)sender
46 | {
47 | NSLog(@"Value Changed");
48 | }
49 |
50 | @end
51 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/AXTextViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // AXTextViewController.m
3 | // ReadingContent
4 | //
5 | // Created by Doug Russell on 9/12/13.
6 | // Copyright (c) 2013 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "AXTextViewController.h"
22 | #import "AXTextReadingContentView.h"
23 |
24 | @interface AXTextViewController ()
25 |
26 | @end
27 |
28 | @implementation AXTextViewController
29 |
30 | - (void)setIsLastPage:(bool)isLastPage
31 | {
32 | _isLastPage = isLastPage;
33 | [self ax_configureCausesPageTurn];
34 | }
35 |
36 | - (void)setTextView:(AXTextView *)textView
37 | {
38 | if (textView != _textView)
39 | {
40 | _textView = textView;
41 | [self ax_configureCausesPageTurn];
42 | }
43 | }
44 |
45 | - (void)ax_configureCausesPageTurn
46 | {
47 | if ([self.textView respondsToSelector:@selector(setCausesPageTurn:)])
48 | {
49 | ((AXTextReadingContentView *)self.textView).causesPageTurn = !self.isLastPage;
50 | }
51 | }
52 |
53 | @end
54 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASAccessibilityElement.m:
--------------------------------------------------------------------------------
1 | //
2 | // ASAccessibilityElement.m
3 | //
4 | // Created by Doug Russell
5 | // Copyright (c) 2012 Doug Russell. All rights reserved.
6 | //
7 | // Licensed under the Apache License, Version 2.0 (the "License");
8 | // you may not use this file except in compliance with the License.
9 | // You may obtain a copy of the License at
10 | //
11 | // http://www.apache.org/licenses/LICENSE-2.0
12 | //
13 | // Unless required by applicable law or agreed to in writing, software
14 | // distributed under the License is distributed on an "AS IS" BASIS,
15 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | // See the License for the specific language governing permissions and
17 | // limitations under the License.
18 | //
19 |
20 | #import "ASAccessibilityElement.h"
21 |
22 | @implementation ASAccessibilityElement
23 | {
24 | bool hasViewContainer;
25 | }
26 |
27 | - (instancetype)initWithAccessibilityContainer:(id)container
28 | {
29 | self = [super initWithAccessibilityContainer:container];
30 | if (self)
31 | {
32 | hasViewContainer = [container isKindOfClass:[UIView class]];
33 | }
34 | return self;
35 | }
36 |
37 | - (CGRect)accessibilityFrame
38 | {
39 | if (!hasViewContainer)
40 | return [super accessibilityFrame];
41 | // accessibilityFrame is in screen coordinates, so do some hoop jumping to convert
42 | UIWindow *window = [[self accessibilityContainer] window];
43 | if (window == nil)
44 | return self.frameRelativeToContainer;
45 | CGRect frame = self.frameRelativeToContainer;
46 | frame = [[self accessibilityContainer] convertRect:frame toView:window];
47 | frame = [window convertRect:frame toWindow:nil];
48 | return frame;
49 | }
50 |
51 | @end
52 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASSegmentedControlViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ASSegmentedControlViewController.m
3 | // AccessibilitySuite
4 | //
5 | // Created by Doug Russell
6 | // Copyright (c) Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "ASSegmentedControlViewController.h"
22 |
23 | // Note of possible interest:
24 | // The segmented controls take their accessibility labels from their images
25 | // which is why they're being manipulated in view did load.
26 | // This demo uses IB and the nib loading logic can sometimes reuse
27 | // the same UIImage instance, so it was necessary to add an extra copy
28 | // of the segmented control images to demonstrate the case where
29 | // labels are extracted from png file names.
30 |
31 | @interface ASSegmentedControlViewController ()
32 |
33 | @end
34 |
35 | @implementation ASSegmentedControlViewController
36 |
37 | #pragma mark - Init/Dealloc
38 |
39 | - (id)init
40 | {
41 | self = [super init];
42 | if (self)
43 | {
44 | self.title = @"Segmented Controls";
45 | }
46 | return self;
47 | }
48 |
49 | #pragma mark - View Life Cycle
50 |
51 | - (void)viewDidLoad
52 | {
53 | [super viewDidLoad];
54 | [self.segmentedControlAccessibleImages imageForSegmentAtIndex:0].accessibilityLabel = @"Left";
55 | [self.segmentedControlAccessibleImages imageForSegmentAtIndex:1].accessibilityLabel = @"Right";
56 | }
57 |
58 | @end
59 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASPageSlider.m:
--------------------------------------------------------------------------------
1 | //
2 | // ASPageSlider.m
3 | //
4 | // Created by Doug Russell
5 | // Copyright (c) 2012 Doug Russell. All rights reserved.
6 | //
7 | // Licensed under the Apache License, Version 2.0 (the "License");
8 | // you may not use this file except in compliance with the License.
9 | // You may obtain a copy of the License at
10 | //
11 | // http://www.apache.org/licenses/LICENSE-2.0
12 | //
13 | // Unless required by applicable law or agreed to in writing, software
14 | // distributed under the License is distributed on an "AS IS" BASIS,
15 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | // See the License for the specific language governing permissions and
17 | // limitations under the License.
18 | //
19 |
20 | #import "ASPageSlider.h"
21 |
22 | @interface ASPageSlider ()
23 | - (void)updateAccessibilityValue;
24 | @end
25 |
26 | @implementation ASPageSlider
27 |
28 | static void CommonInit(ASPageSlider *self)
29 | {
30 | [self updateAccessibilityValue];
31 | }
32 |
33 | - (id)initWithCoder:(NSCoder *)aDecoder
34 | {
35 | self = [super initWithCoder:aDecoder];
36 | if (self)
37 | {
38 | CommonInit(self);
39 | }
40 | return self;
41 | }
42 |
43 | - (id)initWithFrame:(CGRect)frame
44 | {
45 | self = [super initWithFrame:frame];
46 | if (self)
47 | {
48 | CommonInit(self);
49 | }
50 | return self;
51 | }
52 |
53 | - (void)awakeFromNib
54 | {
55 | [self updateAccessibilityValue];
56 | }
57 |
58 | - (NSString *)accessibilityLabel
59 | {
60 | return @"Page";
61 | }
62 |
63 | - (void)accessibilityIncrement
64 | {
65 | self.value += 1.0f;
66 | }
67 |
68 | - (void)accessibilityDecrement
69 | {
70 | self.value -= 1.0f;
71 | }
72 |
73 | - (void)setValue:(float)value animated:(BOOL)animated
74 | {
75 | [super setValue:value animated:animated];
76 | [self updateAccessibilityValue];
77 | }
78 |
79 | - (void)updateAccessibilityValue
80 | {
81 | self.accessibilityValue = [NSString stringWithFormat:@"%3.0f", self.value];
82 | }
83 |
84 | @end
85 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASContainerViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ASContainerViewController.m
3 | // AccessibilitySuite
4 | //
5 | // Created by Doug Russell
6 | // Copyright (c) 2012 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "ASContainerViewController.h"
22 | #import "ASAccessibleImageView.h"
23 |
24 | @interface ASContainerViewController ()
25 | @property (nonatomic) ASAccessibleImageView *imageView;
26 | @end
27 |
28 | @implementation ASContainerViewController
29 |
30 | #pragma mark - Init/Dealloc
31 |
32 | - (id)init
33 | {
34 | self = [super init];
35 | if (self)
36 | {
37 | self.title = @"Container";
38 | }
39 | return self;
40 | }
41 |
42 | #pragma mark - View Life Cycle
43 |
44 | - (void)loadView
45 | {
46 | [super loadView];
47 | self.imageView = [[ASAccessibleImageView alloc] initWithFrame:self.view.bounds];
48 | self.imageView.contentMode = UIViewContentModeCenter;
49 | self.imageView.image = [UIImage imageNamed:@"Shapes"];
50 | if (ISIPAD)
51 | {
52 | [self.imageView addAccessibilityElement:@"Triangle" hint:@"Picture of a triangle" frame:CGRectMake(520.0f, 120.0f, 120.0f, 120.0f)];
53 | [self.imageView addAccessibilityElement:@"Square" hint:@"Picture of a square" frame:CGRectMake(140.0f, 770.0f, 130.0f, 130.0f)];
54 | }
55 | else
56 | {
57 | [self.imageView addAccessibilityElement:@"Triangle" hint:@"Picture of a triangle" frame:CGRectMake(30.0f, 50.0f, 120.0f, 120.0f)];
58 | [self.imageView addAccessibilityElement:@"Square" hint:@"Picture of a square" frame:CGRectMake(170.0f, 230.0f, 130.0f, 130.0f)];
59 | }
60 | [self.view addSubview:self.imageView];
61 | }
62 |
63 | @end
64 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASAccessibleImageView.m:
--------------------------------------------------------------------------------
1 | //
2 | // ASAccessibleImageView.m
3 | //
4 | // Created by Doug Russell
5 | // Copyright (c) 2012 Doug Russell. All rights reserved.
6 | //
7 | // Licensed under the Apache License, Version 2.0 (the "License");
8 | // you may not use this file except in compliance with the License.
9 | // You may obtain a copy of the License at
10 | //
11 | // http://www.apache.org/licenses/LICENSE-2.0
12 | //
13 | // Unless required by applicable law or agreed to in writing, software
14 | // distributed under the License is distributed on an "AS IS" BASIS,
15 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | // See the License for the specific language governing permissions and
17 | // limitations under the License.
18 | //
19 |
20 | #import "ASAccessibleImageView.h"
21 | #import "ASAccessibilityElement.h"
22 |
23 | @interface ASAccessibleImageView ()
24 | @property (strong, nonatomic) NSMutableArray *accessibilityElements;
25 | @end
26 |
27 | @implementation ASAccessibleImageView
28 |
29 | #pragma mark - Accessors
30 |
31 | - (BOOL)isAccessibilityElement
32 | {
33 | return NO;
34 | }
35 |
36 | - (NSMutableArray *)accessibilityElements
37 | {
38 | if (_accessibilityElements == nil)
39 | {
40 | _accessibilityElements = [NSMutableArray new];
41 | }
42 | return _accessibilityElements;
43 | }
44 |
45 | #pragma mark - UIAccessibilityContainer
46 |
47 | - (NSInteger)accessibilityElementCount
48 | {
49 | return self.accessibilityElements.count;
50 | }
51 |
52 | - (id)accessibilityElementAtIndex:(NSInteger)index
53 | {
54 | return [self.accessibilityElements objectAtIndex:index];
55 | }
56 |
57 | - (NSInteger)indexOfAccessibilityElement:(id)element
58 | {
59 | return [self.accessibilityElements indexOfObject:element];
60 | }
61 |
62 | #pragma mark - Public
63 |
64 | - (void)addAccessibilityElement:(NSString *)label hint:(NSString *)hint frame:(CGRect)frame
65 | {
66 | if (!label.length)
67 | {
68 | return;
69 | }
70 | ASAccessibilityElement *accElement = [[ASAccessibilityElement alloc] initWithAccessibilityContainer:self];
71 | if (accElement)
72 | {
73 | accElement.frameRelativeToContainer = frame;
74 | accElement.accessibilityLabel = label;
75 | accElement.accessibilityHint = hint;
76 | accElement.accessibilityTraits = UIAccessibilityTraitStaticText;
77 | [self.accessibilityElements addObject:accElement];
78 | }
79 | }
80 |
81 | - (void)clearAccessibilityElements
82 | {
83 | [self.accessibilityElements removeAllObjects];
84 | }
85 |
86 | @end
87 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASButtonViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ASButtonViewController.m
3 | // AccessibilitySuite
4 | //
5 | // Created by Doug Russell
6 | // Copyright (c) 2012 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "ASButtonViewController.h"
22 |
23 | @interface ASButtonViewController ()
24 | @property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
25 | @property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
26 | - (IBAction)pageChanged:(UIPageControl *)sender;
27 | @property (weak, nonatomic) IBOutlet UIView *roundedRectButtonView;
28 | @property (weak, nonatomic) IBOutlet UIView *backgroundImageButtonView;
29 | @property (weak, nonatomic) IBOutlet UIView *bakedInTextImageButtonView;
30 | @property (weak, nonatomic) IBOutlet UIView *accessibleImageButtonView;
31 | @end
32 |
33 | @implementation ASButtonViewController
34 |
35 | #pragma mark - Init/Dealloc
36 |
37 | - (id)init
38 | {
39 | self = [super init];
40 | if (self)
41 | {
42 | self.title = @"Buttons";
43 | }
44 | return self;
45 | }
46 |
47 | - (void)dealloc
48 | {
49 | _scrollView.delegate = nil;
50 | }
51 |
52 | #pragma mark - View Life Cycle
53 |
54 | - (void)viewDidLoad
55 | {
56 | [super viewDidLoad];
57 |
58 | self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width * 4, self.scrollView.bounds.size.height);
59 |
60 | CGRect panelRect = self.scrollView.bounds;
61 | self.roundedRectButtonView.frame = panelRect;
62 | [self.scrollView addSubview:self.roundedRectButtonView];
63 | panelRect.origin.x += panelRect.size.width;
64 | self.backgroundImageButtonView.frame = panelRect;
65 | [self.scrollView addSubview:self.backgroundImageButtonView];
66 | panelRect.origin.x += panelRect.size.width;
67 | self.bakedInTextImageButtonView.frame = panelRect;
68 | [self.scrollView addSubview:self.bakedInTextImageButtonView];
69 | panelRect.origin.x += panelRect.size.width;
70 | self.accessibleImageButtonView.frame = panelRect;
71 | [self.scrollView addSubview:self.accessibleImageButtonView];
72 | }
73 |
74 | #pragma mark - Page Control
75 |
76 | - (IBAction)pageChanged:(UIPageControl *)sender
77 | {
78 | self.scrollView.contentOffset = CGPointMake(sender.currentPage * self.scrollView.bounds.size.width, 0.0f);
79 | }
80 |
81 | #pragma mark - Scroll
82 |
83 | - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
84 | {
85 | self.pageControl.currentPage = trunc(scrollView.contentOffset.x / scrollView.bounds.size.width);
86 | }
87 |
88 | @end
89 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASRootViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ESRootViewController.m
3 | // AccessibilitySuite
4 | //
5 | // Created by Doug Russell
6 | // Copyright (c) Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "ASRootViewController.h"
22 | #import "ASSegmentedControlViewController.h"
23 | #import "ASButtonViewController.h"
24 | #import "ASContainerViewController.h"
25 | #import "ASSliderViewController.h"
26 |
27 | @interface ASRootViewController ()
28 |
29 | @end
30 |
31 | @implementation ASRootViewController
32 | @synthesize tableView=_tableView;
33 |
34 | #pragma mark - Init / Dealloc
35 |
36 | - (id)init
37 | {
38 | self = [super init];
39 | if (self)
40 | {
41 | self.title = @"Accessibility Samples";
42 | }
43 | return self;
44 | }
45 |
46 | - (void)dealloc
47 | {
48 | _tableView.delegate = nil;
49 | _tableView.dataSource = nil;
50 | }
51 |
52 | #pragma mark - View Life Cycle
53 |
54 | - (void)loadView
55 | {
56 | [super loadView];
57 | self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
58 | self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
59 | self.tableView.dataSource = self;
60 | self.tableView.delegate = self;
61 | [self.view addSubview:self.tableView];
62 | }
63 |
64 | #pragma mark - Table View Data Source
65 |
66 | enum {
67 | ButtonsRow,
68 | SegmentedControlRow,
69 | ContainerRow,
70 | SliderRow,
71 | NumberOfRows,
72 | };
73 |
74 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
75 | {
76 | return NumberOfRows;
77 | }
78 |
79 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
80 | {
81 | static NSString *reuseIdentifier = @"cell";
82 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
83 | if (cell == nil)
84 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier];
85 | switch (indexPath.row) {
86 | case ButtonsRow:
87 | [[cell textLabel] setText:@"Buttons"];
88 | break;
89 | case SegmentedControlRow:
90 | [[cell textLabel] setText:@"Segmented Controls"];
91 | break;
92 | case ContainerRow:
93 | [[cell textLabel] setText:@"Container"];
94 | break;
95 | case SliderRow:
96 | [[cell textLabel] setText:@"Sliders"];
97 | break;
98 | default:
99 | break;
100 | }
101 | return cell;
102 | }
103 |
104 | #pragma mark - Table View Delegate
105 |
106 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
107 | {
108 | [tableView deselectRowAtIndexPath:indexPath animated:YES];
109 | UIViewController *controller;
110 | switch (indexPath.row) {
111 | case ButtonsRow:
112 | controller = [ASButtonViewController new];
113 | break;
114 | case SegmentedControlRow:
115 | controller = [ASSegmentedControlViewController new];
116 | break;
117 | case ContainerRow:
118 | controller = [ASContainerViewController new];
119 | break;
120 | case SliderRow:
121 | controller = [ASSliderViewController new];
122 | break;
123 | default:
124 | break;
125 | }
126 | if (controller)
127 | [self.navigationController pushViewController:controller animated:YES];
128 | }
129 |
130 | @end
131 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/AXTextView.m:
--------------------------------------------------------------------------------
1 | //
2 | // AXTextView.m
3 | // ReadingContent
4 | //
5 | // Created by Doug Russell on 9/12/13.
6 | // Copyright (c) 2013 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "AXTextView.h"
22 | #import "AXTextView_Internal.h"
23 |
24 | @implementation AXTextView
25 |
26 | #pragma mark -
27 |
28 | - (NSAttributedString *)content
29 | {
30 | // Rippped from wikipedia page on screen readers
31 | NSString *content = @"A screen reader is a software application that attempts to identify and interpret what is being displayed on the screen (or, more accurately, sent to standard output, whether a video monitor is present or not). This interpretation is then re-presented to the user with text-to-speech, sound icons, or a Braille output device. Screen readers are a form of assistive technology potentially useful to people who are blind, visually impaired, illiterate or learning disabled, often in combination with other assistive technology, such as screen magnifiers.";
32 |
33 | CTFontRef font = CTFontCreateWithName(CFSTR("HelveticaNeueLight"), 18, NULL);
34 | NSDictionary *attributes = nil;
35 | if (font)
36 | {
37 | attributes = [NSDictionary dictionaryWithObject:(__bridge id)font forKey:(id)kCTFontAttributeName];
38 | CFRelease(font);
39 | }
40 |
41 | return [[NSAttributedString alloc] initWithString:content attributes:attributes];
42 | }
43 |
44 | - (id)initWithCoder:(NSCoder *)aDecoder
45 | {
46 | self = [super initWithCoder:aDecoder];
47 | if (self)
48 | {
49 | self.textInsets = UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0);
50 | self.attributedText = [self content];
51 | }
52 | return self;
53 | }
54 |
55 | - (void)dealloc
56 | {
57 | self.frameRef = NULL;
58 | }
59 |
60 | #pragma mark -
61 |
62 | - (void)setFrameRef:(CTFrameRef)frameRef
63 | {
64 | if (frameRef != _frameRef)
65 | {
66 | if (_frameRef)
67 | {
68 | CFRelease(_frameRef);
69 | }
70 | if (frameRef)
71 | {
72 | CFRetain(frameRef);
73 | }
74 | _frameRef = frameRef;
75 | }
76 | }
77 |
78 | - (void)setAttributedText:(NSAttributedString *)attributedText
79 | {
80 | if (attributedText != _attributedText)
81 | {
82 | _attributedText = attributedText;
83 | [self ax_reset];
84 | }
85 | }
86 |
87 | - (void)setTextInsets:(UIEdgeInsets)textInsets
88 | {
89 | _textInsets = textInsets;
90 | [self setNeedsDisplay];
91 | }
92 |
93 | #pragma mark -
94 |
95 | - (void)ax_reset
96 | {
97 | [self setNeedsDisplay];
98 | }
99 |
100 | - (void)layoutSubviews
101 | {
102 | [super layoutSubviews];
103 | [self ax_reset];
104 | }
105 |
106 | #pragma mark - Drawing
107 |
108 | - (void)drawRect:(CGRect)rect
109 | {
110 | CGContextRef context = UIGraphicsGetCurrentContext();
111 |
112 | // Draw Text
113 | CGContextSaveGState(context);
114 | CGContextSetTextMatrix(context, CGAffineTransformIdentity);
115 | CGContextTranslateCTM(context, 0, rect.size.height);
116 | CGContextScaleCTM(context, 1.0, -1.0);
117 | [self drawTextWithFramesetter:self.attributedText context:context];
118 | CGContextRestoreGState(context);
119 | }
120 |
121 | - (void)drawTextWithFramesetter:(NSAttributedString *)attributedString context:(CGContextRef)context
122 | {
123 | if (attributedString == nil)
124 | {
125 | return;
126 | }
127 | // Draw our text inside a frame
128 | [self makeFrameWithAttributeString:attributedString];
129 | CTFrameDraw(self.frameRef, context);
130 | }
131 |
132 | - (void)makeFrameWithAttributeString:(NSAttributedString *)attributedString
133 | {
134 | CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)attributedString);
135 | if (framesetter)
136 | {
137 | CFRange range = CFRangeMake(0, 0);
138 | CGRect rect = UIEdgeInsetsInsetRect(self.bounds, self.textInsets);
139 | UIBezierPath *path = [UIBezierPath bezierPathWithRect:rect];
140 | CTFrameRef frameRef = CTFramesetterCreateFrame(framesetter, range, [path CGPath], NULL);
141 | if (frameRef)
142 | {
143 | self.frameRef = frameRef;
144 | CFRelease(frameRef);
145 | CFRelease(framesetter);
146 | }
147 | }
148 | }
149 |
150 | @end
151 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASCustomizedPageSlider.m:
--------------------------------------------------------------------------------
1 | //
2 | // ASCustomizedPageSlider.m
3 | //
4 | // Created by Doug Russell
5 | // Copyright (c) 2012 Doug Russell. All rights reserved.
6 | //
7 | // Licensed under the Apache License, Version 2.0 (the "License");
8 | // you may not use this file except in compliance with the License.
9 | // You may obtain a copy of the License at
10 | //
11 | // http://www.apache.org/licenses/LICENSE-2.0
12 | //
13 | // Unless required by applicable law or agreed to in writing, software
14 | // distributed under the License is distributed on an "AS IS" BASIS,
15 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | // See the License for the specific language governing permissions and
17 | // limitations under the License.
18 | //
19 |
20 | #import "ASCustomizedPageSlider.h"
21 |
22 | // IMPORTANT: Don't actually use this class, it's just a demonstration of how to make a custom slider accessible. Use UISlider, it's much better.
23 |
24 | @interface ASCustomizedPageSlider ()
25 | - (void)updateAccessibilityValue;
26 | @end
27 |
28 | @implementation ASCustomizedPageSlider
29 |
30 | static void CommonInit(ASCustomizedPageSlider *self)
31 | {
32 | self.value = 1.0f;
33 | self.minValue = 1.0f;
34 | self.maxValue = 20.0f;
35 | [self updateAccessibilityValue];
36 | }
37 |
38 | - (id)initWithFrame:(CGRect)frame
39 | {
40 | self = [super initWithFrame:frame];
41 | if (self)
42 | {
43 | CommonInit(self);
44 | }
45 | return self;
46 | }
47 |
48 | - (id)initWithCoder:(NSCoder *)aDecoder
49 | {
50 | self = [super initWithCoder:aDecoder];
51 | if (self)
52 | {
53 | CommonInit(self);
54 | }
55 | return self;
56 | }
57 |
58 | - (void)setValue:(float)value
59 | {
60 | if (value < self.minValue)
61 | return;
62 | if (value > self.maxValue)
63 | return;
64 | _value = value;
65 | [self updateAccessibilityValue];
66 | [self setNeedsDisplay];
67 | [self sendActionsForControlEvents:UIControlEventValueChanged];
68 | }
69 |
70 | #define HandleSize 30.0f
71 | #define HandleInset (HandleSize / 2.0f)
72 |
73 | - (CGRect)handleRect
74 | {
75 | CGSize size = self.bounds.size;
76 | CGFloat x = (size.width - HandleSize) * ((self.value - self.minValue) / (self.maxValue - self.minValue));
77 | return CGRectMake(x, CGRectGetMidY(self.bounds) - HandleInset, HandleSize, HandleSize);
78 | }
79 |
80 | - (void)drawRect:(CGRect)rect
81 | {
82 | [[UIColor blackColor] set];
83 | UIRectFill(rect);
84 | [[UIColor grayColor] set];
85 | UIRectFill([self handleRect]);
86 | }
87 |
88 | - (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
89 | {
90 | BOOL beginTracking = [super beginTrackingWithTouch:touch withEvent:event];
91 | if (beginTracking)
92 | {
93 | CGPoint touchLocation = [touch locationInView:self];
94 | if ((touchLocation.x > 0.0f) ||
95 | (touchLocation.x < (self.bounds.size.width - HandleSize)))
96 | {
97 | CGRect handleRect = [self handleRect];
98 | if (!CGRectContainsPoint(handleRect, touchLocation))
99 | beginTracking = NO;
100 | }
101 | else
102 | beginTracking = NO;
103 | }
104 | return beginTracking;
105 | }
106 |
107 | - (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
108 | {
109 | BOOL continueTracking = [super continueTrackingWithTouch:touch withEvent:event];
110 | if (continueTracking)
111 | {
112 | CGPoint touchLocation = [touch locationInView:self];
113 | if ((touchLocation.x > 0.0f) ||
114 | (touchLocation.x < (self.bounds.size.width - HandleSize)))
115 | {
116 | self.value = ((touchLocation.x - HandleInset) / (self.bounds.size.width - HandleSize)) * (self.maxValue - self.minValue);
117 | }
118 | else
119 | continueTracking = NO;
120 | }
121 | return continueTracking;
122 | }
123 |
124 | - (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
125 | {
126 | [super endTrackingWithTouch:touch withEvent:event];
127 | }
128 |
129 | - (void)cancelTrackingWithEvent:(UIEvent *)event
130 | {
131 | [super cancelTrackingWithEvent:event];
132 | }
133 |
134 | #pragma mark -
135 |
136 | - (BOOL)isAccessibilityElement
137 | {
138 | return YES;
139 | }
140 |
141 | - (void)accessibilityIncrement
142 | {
143 | self.value += 1.0f;
144 | }
145 |
146 | - (void)accessibilityDecrement
147 | {
148 | self.value -= 1.0f;
149 | }
150 |
151 | - (UIAccessibilityTraits)accessibilityTraits
152 | {
153 | UIAccessibilityTraits traits = [super accessibilityTraits];
154 | return (traits | UIAccessibilityTraitAdjustable);
155 | }
156 |
157 | - (NSString *)accessibilityLabel
158 | {
159 | return @"Page"; // Ideally this would be localized
160 | }
161 |
162 | - (void)updateAccessibilityValue
163 | {
164 | self.accessibilityValue = [NSString stringWithFormat:@"%3.0f", self.value];
165 | }
166 |
167 | @end
168 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/AXTextContainerView.m:
--------------------------------------------------------------------------------
1 | //
2 | // AXTextContainerView.m
3 | // ReadingContent
4 | //
5 | // Created by Doug Russell on 9/12/13.
6 | // Copyright (c) 2013 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "AXTextContainerView.h"
22 | #import "AXTextView_Internal.h"
23 |
24 | @interface AXTextContainerView ()
25 | @property (nonatomic) NSMutableArray *axTextElements;
26 | @end
27 |
28 | @implementation AXTextContainerView
29 |
30 | #pragma mark - Reset
31 |
32 | - (void)reset
33 | {
34 | [self ax_resetAccessibilityElements];
35 | [super ax_reset];
36 | }
37 |
38 | #pragma mark - Accessibility Elements
39 |
40 | - (void)ax_resetAccessibilityElements
41 | {
42 | self.axTextElements = nil;
43 | }
44 |
45 | - (void)ax_configureAccessibilityElements
46 | {
47 | if (!self.axTextElements)
48 | {
49 | // If we don't have a frame ref, we don't have any lines
50 | if (self.frameRef == NULL)
51 | {
52 | return;
53 | }
54 | UIWindow *window = self.window;
55 | if (window == nil)
56 | {
57 |
58 | }
59 | self.axTextElements = [NSMutableArray new];
60 | CGRect rect = self.bounds;
61 | // Get the lines out of the current frame and the lines origins
62 | CFArrayRef lines = CTFrameGetLines(self.frameRef);
63 | CFIndex count = CFArrayGetCount(lines);
64 | CGPoint *origins = malloc(sizeof(CGPoint) * count);
65 | CTFrameGetLineOrigins(self.frameRef, CFRangeMake(0, count), origins);
66 | UIEdgeInsets textInsets = self.textInsets;
67 | for (CFIndex i = 0; i < count; i++)
68 | {
69 | CTLineRef line = CFArrayGetValueAtIndex(lines, i);
70 | // Get the lines substring
71 | CFRange cfRange = CTLineGetStringRange(line);
72 | NSRange range = NSMakeRange(cfRange.location, cfRange.length);
73 | NSString *string = [self.attributedText.string substringWithRange:range];
74 | // Get the lines geometry
75 | CGFloat ascent, descent, leading;
76 | double width = CTLineGetTypographicBounds(line, &ascent, &descent, &leading);
77 | CGFloat height = ascent + descent + leading;
78 | // Skips lines that are just line breaks
79 | if (string.length == 1 && [string isEqualToString:@"\n"])
80 | {
81 | continue;
82 | }
83 | // Adjust the lines origin for top left origin instead of bottotm left origin
84 | CGPoint adjustedOrigin = origins[i];
85 | adjustedOrigin.y = rect.size.height - adjustedOrigin.y - height - textInsets.top;
86 | adjustedOrigin.x += textInsets.left;
87 | CGRect frame = (CGRect){ adjustedOrigin, (CGSize) { (CGFloat)width, height} };
88 | frame = [self convertRect:frame toView:window];
89 | frame = [window convertRect:frame toWindow:nil];
90 | // Build accessibility element
91 | UIAccessibilityElement *accElement = [[UIAccessibilityElement alloc] initWithAccessibilityContainer:self];
92 | accElement.isAccessibilityElement = YES;
93 | accElement.accessibilityLabel = string;
94 | accElement.accessibilityFrame = frame;
95 | // Traits is a bitmask so don't for get to | in the default traits
96 | accElement.accessibilityTraits = accElement.accessibilityTraits | UIAccessibilityTraitStaticText;
97 | [self.axTextElements addObject:accElement];
98 | }
99 | free(origins);
100 | }
101 | }
102 |
103 | #pragma mark - Accessibility Container
104 |
105 | /*
106 | Return YES if the receiver should be exposed as an accessibility element.
107 | default == NO
108 | default on UIKit controls == YES
109 | Setting the property to YES will cause the receiver to be visible to assistive applications.
110 | */
111 | - (BOOL)isAccessibilityElement
112 | {
113 | // Containers are not themselves accessibility elements
114 | return NO;
115 | }
116 |
117 | /*
118 | Returns the number of accessibility elements in the container.
119 | */
120 | - (NSInteger)accessibilityElementCount
121 | {
122 | [self ax_configureAccessibilityElements];
123 | return (NSInteger)[self.axTextElements count];
124 | }
125 |
126 | /*
127 | Returns the accessibility element in order, based on index.
128 | default == nil
129 | */
130 | - (id)accessibilityElementAtIndex:(NSInteger)index
131 | {
132 | [self ax_configureAccessibilityElements];
133 | return [self.axTextElements objectAtIndex:index];
134 | }
135 |
136 | /*
137 | Returns the ordered index for an accessibility element
138 | default == NSNotFound
139 | */
140 | - (NSInteger)indexOfAccessibilityElement:(id)element
141 | {
142 | [self ax_configureAccessibilityElements];
143 | return [self.axTextElements indexOfObject:element];
144 | }
145 |
146 | @end
147 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/AXPagedViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // AXPagedViewController.m
3 | // ReadingContent
4 | //
5 | // Created by Doug Russell on 9/12/13.
6 | // Copyright (c) 2013 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "AXPagedViewController.h"
22 | #import "AXTextViewController.h"
23 |
24 | @interface AXPagedViewController ()
25 | @property (nonatomic) UIPageViewController *pageViewController;
26 | @property (nonatomic) NSArray *viewControllers;
27 | @end
28 |
29 | @implementation AXPagedViewController
30 |
31 | #pragma mark - Segue
32 |
33 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
34 | {
35 | [super prepareForSegue:segue sender:sender];
36 |
37 | if ([segue.identifier isEqualToString:@"PageViewControllerSegue"])
38 | {
39 | self.pageViewController = segue.destinationViewController;
40 |
41 | UIStoryboard *storyboard = self.storyboard;
42 | // Store our view controller pages
43 | self.viewControllers =
44 | @[
45 | [storyboard instantiateViewControllerWithIdentifier:@"ReadingContentTextViewController"],
46 | [storyboard instantiateViewControllerWithIdentifier:@"ReadingContentTextViewController"],
47 | [storyboard instantiateViewControllerWithIdentifier:@"ReadingContentTextViewController"],
48 | ];
49 | [[self.viewControllers lastObject] setIsLastPage:YES];
50 |
51 | self.pageViewController.dataSource = self;
52 | self.pageViewController.delegate = self;
53 |
54 | self.pageViewController.view.backgroundColor = [UIColor lightGrayColor];
55 |
56 | [self.pageViewController setViewControllers:@[self.viewControllers[0]] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL];
57 | }
58 | }
59 |
60 | #pragma mark - UIPageViewControllerDataSource
61 |
62 | - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
63 | {
64 | UIViewController *viewControllerBefore = nil;
65 | NSUInteger index = [self.viewControllers indexOfObject:viewController];
66 | if (index != NSNotFound)
67 | {
68 | index--;
69 | if (index != NSUIntegerMax)
70 | {
71 | viewControllerBefore = self.viewControllers[index];
72 | }
73 | }
74 | return viewControllerBefore;
75 | }
76 |
77 | - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
78 | {
79 | UIViewController *viewControllerAfter = nil;
80 | NSUInteger index = [self.viewControllers indexOfObject:viewController];
81 | if (index != NSNotFound)
82 | {
83 | index++;
84 | if (index != [self.viewControllers count])
85 | {
86 | viewControllerAfter = self.viewControllers[index];
87 | }
88 | }
89 | return viewControllerAfter;
90 | }
91 |
92 | - (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
93 | {
94 | return (NSInteger)[self.viewControllers count];
95 | }
96 |
97 | - (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
98 | {
99 | if (self.viewControllers && [self.pageViewController.viewControllers count])
100 | {
101 | NSUInteger index = [self.viewControllers indexOfObject:self.pageViewController.viewControllers[0]];
102 | if (index != NSNotFound)
103 | {
104 | return index;
105 | }
106 | }
107 | return 0;
108 | }
109 |
110 | - (BOOL)accessibilityScroll:(UIAccessibilityScrollDirection)direction
111 | {
112 | BOOL handled = NO;
113 | if (self.viewControllers && [self.pageViewController.viewControllers count])
114 | {
115 | NSUInteger index = [self.viewControllers indexOfObject:self.pageViewController.viewControllers[0]];
116 | if (index != NSNotFound)
117 | {
118 | UIPageViewControllerNavigationDirection navDirection;
119 | switch (direction) {
120 | case UIAccessibilityScrollDirectionLeft:
121 | case UIAccessibilityScrollDirectionNext:
122 | index++;
123 | if (index != [self.viewControllers count])
124 | {
125 | handled = YES;
126 | }
127 | navDirection = UIPageViewControllerNavigationDirectionForward;
128 | break;
129 | case UIAccessibilityScrollDirectionRight:
130 | case UIAccessibilityScrollDirectionPrevious:
131 | index--;
132 | if (index != NSUIntegerMax)
133 | {
134 | handled = YES;
135 | }
136 | navDirection = UIPageViewControllerNavigationDirectionReverse;
137 | break;
138 | default:
139 | break;
140 | }
141 | if (handled)
142 | {
143 | [self.pageViewController setViewControllers:@[self.viewControllers[index]] direction:navDirection animated:YES completion:^(BOOL finished) {
144 | UIAccessibilityPostNotification(UIAccessibilityPageScrolledNotification, nil);
145 | }];
146 | }
147 | }
148 | }
149 | return handled;
150 | }
151 |
152 | @end
153 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/AXTextReadingContentView.m:
--------------------------------------------------------------------------------
1 | //
2 | // AXTextReadingContentView.m
3 | // ReadingContent
4 | //
5 | // Created by Doug Russell on 9/12/13.
6 | // Copyright (c) 2013 Doug Russell. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 |
21 | #import "AXTextReadingContentView.h"
22 | #import "AXTextView_Internal.h"
23 |
24 | @interface AXTextReadingContentView ()
25 | @property (nonatomic) NSMutableArray *axTextElements;
26 | @end
27 |
28 | @implementation AXTextReadingContentView
29 |
30 | #pragma mark - Reset
31 |
32 | - (void)reset
33 | {
34 | [self ax_resetAccessibilityElements];
35 | [super ax_reset];
36 | }
37 |
38 | #pragma mark - Accessibility Elements
39 |
40 | - (void)ax_resetAccessibilityElements
41 | {
42 | self.axTextElements = nil;
43 | }
44 |
45 | - (void)ax_configureAccessibilityElements
46 | {
47 | if (!self.axTextElements)
48 | {
49 | // If we don't have a frame ref, we don't have any lines
50 | if (self.frameRef == NULL)
51 | {
52 | return;
53 | }
54 | self.axTextElements = [NSMutableArray new];
55 | CGRect rect = self.bounds;
56 | // Get the lines out of the current frame and the lines origins
57 | CFArrayRef lines = CTFrameGetLines(self.frameRef);
58 | CFIndex count = CFArrayGetCount(lines);
59 | CGPoint *origins = malloc(sizeof(CGPoint) * count);
60 | CTFrameGetLineOrigins(self.frameRef, CFRangeMake(0, count), origins);
61 | UIEdgeInsets textInsets = self.textInsets;
62 | for (CFIndex i = 0; i < count; i++)
63 | {
64 | CTLineRef line = CFArrayGetValueAtIndex(lines, i);
65 | // Get the lines substring
66 | CFRange cfRange = CTLineGetStringRange(line);
67 | NSRange range = NSMakeRange(cfRange.location, cfRange.length);
68 | NSString *string = [self.attributedText.string substringWithRange:range];
69 | // Get the lines geometry
70 | CGFloat ascent, descent, leading;
71 | double width = CTLineGetTypographicBounds(line, &ascent, &descent, &leading);
72 | CGFloat height = ascent + descent + leading;
73 | // Skips lines that are just line breaks
74 | if (string.length == 1 && [string isEqualToString:@"\n"])
75 | {
76 | continue;
77 | }
78 | // Adjust the lines origin for top left origin instead of bottotm left origin
79 | CGPoint adjustedOrigin = origins[i];
80 | adjustedOrigin.y = rect.size.height - adjustedOrigin.y - height - textInsets.top;
81 | adjustedOrigin.x += textInsets.left;
82 | CGRect frame = (CGRect){ adjustedOrigin, (CGSize) { (CGFloat)width, height} };
83 | // Build accessibility element
84 | UIAccessibilityElement *accElement = [[UIAccessibilityElement alloc] initWithAccessibilityContainer:self];
85 | accElement.isAccessibilityElement = YES;
86 | accElement.accessibilityLabel = string;
87 | accElement.accessibilityFrame = frame;
88 | // Traits is a bitmask so don't for get to | in the default traits
89 | accElement.accessibilityTraits = accElement.accessibilityTraits | UIAccessibilityTraitStaticText;
90 | [self.axTextElements addObject:accElement];
91 | }
92 | free(origins);
93 | }
94 | }
95 |
96 | #pragma mark - Accessibility Reading Content
97 |
98 | - (BOOL)isAccessibilityElement
99 | {
100 | return YES;
101 | }
102 |
103 | - (UIAccessibilityTraits)accessibilityTraits
104 | {
105 | UIAccessibilityTraits traits = [super accessibilityTraits];
106 | if (self.causesPageTurn)
107 | {
108 | traits |= UIAccessibilityTraitCausesPageTurn;
109 | }
110 | return traits;
111 | }
112 |
113 | // Returns the line number given a point in the view's coordinate space.
114 | - (NSInteger)accessibilityLineNumberForPoint:(CGPoint)point
115 | {
116 | [self ax_configureAccessibilityElements];
117 | for (NSUInteger i = 0; i < [self.axTextElements count]; i++)
118 | {
119 | UIAccessibilityElement *axElement = self.axTextElements[i];
120 | if (CGRectContainsPoint(axElement.accessibilityFrame, point))
121 | {
122 | return i;
123 | }
124 | }
125 | return NSNotFound;
126 | }
127 |
128 | // Returns the content associated with a line number as a string.
129 | - (NSString *)accessibilityContentForLineNumber:(NSInteger)lineNumber
130 | {
131 | [self ax_configureAccessibilityElements];
132 | return [self.axTextElements[lineNumber] accessibilityLabel];
133 | }
134 |
135 | // Returns the on-screen rectangle for a line number.
136 | - (CGRect)accessibilityFrameForLineNumber:(NSInteger)lineNumber
137 | {
138 | [self ax_configureAccessibilityElements];
139 | CGRect frame = [self.axTextElements[lineNumber] accessibilityFrame];
140 | UIWindow *window = self.window;
141 | frame = [self convertRect:frame toView:window];
142 | if (window)
143 | {
144 | frame = [window convertRect:frame toWindow:nil];
145 | }
146 | return frame;
147 | }
148 |
149 | // Returns a string representing the text displayed on the current page.
150 | - (NSString *)accessibilityPageContent
151 | {
152 | [self ax_configureAccessibilityElements];
153 | return self.attributedText.string;
154 | }
155 |
156 | @end
157 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 9132E2EF17E2C7F900E7FCF3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9132E2EE17E2C7F900E7FCF3 /* Foundation.framework */; };
11 | 9132E2F117E2C7F900E7FCF3 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9132E2F017E2C7F900E7FCF3 /* CoreGraphics.framework */; };
12 | 9132E2F317E2C7F900E7FCF3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9132E2F217E2C7F900E7FCF3 /* UIKit.framework */; };
13 | 9132E2F917E2C7F900E7FCF3 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9132E2F717E2C7F900E7FCF3 /* InfoPlist.strings */; };
14 | 9132E2FB17E2C7F900E7FCF3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9132E2FA17E2C7F900E7FCF3 /* main.m */; };
15 | 9132E2FF17E2C7F900E7FCF3 /* AXAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9132E2FE17E2C7F900E7FCF3 /* AXAppDelegate.m */; };
16 | 9132E30117E2C7F900E7FCF3 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9132E30017E2C7F900E7FCF3 /* Images.xcassets */; };
17 | 9132E31F17E2C83100E7FCF3 /* AXTextViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9132E31E17E2C83100E7FCF3 /* AXTextViewController.m */; };
18 | 9132E32217E2C86000E7FCF3 /* AXTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9132E32117E2C86000E7FCF3 /* AXTextView.m */; };
19 | 9132E32517E2C92F00E7FCF3 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9132E32417E2C92F00E7FCF3 /* Main.storyboard */; };
20 | 9132E32C17E2D9CE00E7FCF3 /* AXTextReadingContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9132E32B17E2D9CE00E7FCF3 /* AXTextReadingContentView.m */; };
21 | 9132E32F17E2DBE700E7FCF3 /* AXTextContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9132E32E17E2DBE700E7FCF3 /* AXTextContainerView.m */; };
22 | 91E9CD3617E2DD5400B90BFB /* AXPagedViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E9CD3517E2DD5400B90BFB /* AXPagedViewController.m */; };
23 | /* End PBXBuildFile section */
24 |
25 | /* Begin PBXFileReference section */
26 | 9132E2EB17E2C7F900E7FCF3 /* ReadingContent.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReadingContent.app; sourceTree = BUILT_PRODUCTS_DIR; };
27 | 9132E2EE17E2C7F900E7FCF3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
28 | 9132E2F017E2C7F900E7FCF3 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
29 | 9132E2F217E2C7F900E7FCF3 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
30 | 9132E2F617E2C7F900E7FCF3 /* ReadingContent-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ReadingContent-Info.plist"; sourceTree = ""; };
31 | 9132E2F817E2C7F900E7FCF3 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
32 | 9132E2FA17E2C7F900E7FCF3 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
33 | 9132E2FC17E2C7F900E7FCF3 /* ReadingContent-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ReadingContent-Prefix.pch"; sourceTree = ""; };
34 | 9132E2FD17E2C7F900E7FCF3 /* AXAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AXAppDelegate.h; sourceTree = ""; };
35 | 9132E2FE17E2C7F900E7FCF3 /* AXAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AXAppDelegate.m; sourceTree = ""; };
36 | 9132E30017E2C7F900E7FCF3 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
37 | 9132E30717E2C7F900E7FCF3 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
38 | 9132E31D17E2C83100E7FCF3 /* AXTextViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AXTextViewController.h; sourceTree = ""; };
39 | 9132E31E17E2C83100E7FCF3 /* AXTextViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AXTextViewController.m; sourceTree = ""; };
40 | 9132E32017E2C86000E7FCF3 /* AXTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AXTextView.h; sourceTree = ""; };
41 | 9132E32117E2C86000E7FCF3 /* AXTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AXTextView.m; sourceTree = ""; };
42 | 9132E32417E2C92F00E7FCF3 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; };
43 | 9132E32917E2CF0400E7FCF3 /* AXTextView_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AXTextView_Internal.h; sourceTree = ""; };
44 | 9132E32A17E2D9CE00E7FCF3 /* AXTextReadingContentView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AXTextReadingContentView.h; sourceTree = ""; };
45 | 9132E32B17E2D9CE00E7FCF3 /* AXTextReadingContentView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AXTextReadingContentView.m; sourceTree = ""; };
46 | 9132E32D17E2DBE700E7FCF3 /* AXTextContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AXTextContainerView.h; sourceTree = ""; };
47 | 9132E32E17E2DBE700E7FCF3 /* AXTextContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AXTextContainerView.m; sourceTree = ""; };
48 | 91E9CD3417E2DD5400B90BFB /* AXPagedViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AXPagedViewController.h; sourceTree = ""; };
49 | 91E9CD3517E2DD5400B90BFB /* AXPagedViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AXPagedViewController.m; sourceTree = ""; };
50 | /* End PBXFileReference section */
51 |
52 | /* Begin PBXFrameworksBuildPhase section */
53 | 9132E2E817E2C7F900E7FCF3 /* Frameworks */ = {
54 | isa = PBXFrameworksBuildPhase;
55 | buildActionMask = 2147483647;
56 | files = (
57 | 9132E2F117E2C7F900E7FCF3 /* CoreGraphics.framework in Frameworks */,
58 | 9132E2F317E2C7F900E7FCF3 /* UIKit.framework in Frameworks */,
59 | 9132E2EF17E2C7F900E7FCF3 /* Foundation.framework in Frameworks */,
60 | );
61 | runOnlyForDeploymentPostprocessing = 0;
62 | };
63 | /* End PBXFrameworksBuildPhase section */
64 |
65 | /* Begin PBXGroup section */
66 | 9132E2E217E2C7F900E7FCF3 = {
67 | isa = PBXGroup;
68 | children = (
69 | 9132E2F417E2C7F900E7FCF3 /* ReadingContent */,
70 | 9132E2ED17E2C7F900E7FCF3 /* Frameworks */,
71 | 9132E2EC17E2C7F900E7FCF3 /* Products */,
72 | );
73 | sourceTree = "";
74 | };
75 | 9132E2EC17E2C7F900E7FCF3 /* Products */ = {
76 | isa = PBXGroup;
77 | children = (
78 | 9132E2EB17E2C7F900E7FCF3 /* ReadingContent.app */,
79 | );
80 | name = Products;
81 | sourceTree = "";
82 | };
83 | 9132E2ED17E2C7F900E7FCF3 /* Frameworks */ = {
84 | isa = PBXGroup;
85 | children = (
86 | 9132E2EE17E2C7F900E7FCF3 /* Foundation.framework */,
87 | 9132E2F017E2C7F900E7FCF3 /* CoreGraphics.framework */,
88 | 9132E2F217E2C7F900E7FCF3 /* UIKit.framework */,
89 | 9132E30717E2C7F900E7FCF3 /* XCTest.framework */,
90 | );
91 | name = Frameworks;
92 | sourceTree = "";
93 | };
94 | 9132E2F417E2C7F900E7FCF3 /* ReadingContent */ = {
95 | isa = PBXGroup;
96 | children = (
97 | 9132E2FD17E2C7F900E7FCF3 /* AXAppDelegate.h */,
98 | 9132E2FE17E2C7F900E7FCF3 /* AXAppDelegate.m */,
99 | 9132E32417E2C92F00E7FCF3 /* Main.storyboard */,
100 | 9132E32317E2C8D400E7FCF3 /* Custom Text View */,
101 | 91E9CD3417E2DD5400B90BFB /* AXPagedViewController.h */,
102 | 91E9CD3517E2DD5400B90BFB /* AXPagedViewController.m */,
103 | 9132E30017E2C7F900E7FCF3 /* Images.xcassets */,
104 | 9132E2F517E2C7F900E7FCF3 /* Supporting Files */,
105 | );
106 | path = ReadingContent;
107 | sourceTree = "";
108 | };
109 | 9132E2F517E2C7F900E7FCF3 /* Supporting Files */ = {
110 | isa = PBXGroup;
111 | children = (
112 | 9132E2F617E2C7F900E7FCF3 /* ReadingContent-Info.plist */,
113 | 9132E2F717E2C7F900E7FCF3 /* InfoPlist.strings */,
114 | 9132E2FA17E2C7F900E7FCF3 /* main.m */,
115 | 9132E2FC17E2C7F900E7FCF3 /* ReadingContent-Prefix.pch */,
116 | );
117 | name = "Supporting Files";
118 | sourceTree = "";
119 | };
120 | 9132E32317E2C8D400E7FCF3 /* Custom Text View */ = {
121 | isa = PBXGroup;
122 | children = (
123 | 9132E31D17E2C83100E7FCF3 /* AXTextViewController.h */,
124 | 9132E31E17E2C83100E7FCF3 /* AXTextViewController.m */,
125 | 9132E32017E2C86000E7FCF3 /* AXTextView.h */,
126 | 9132E32117E2C86000E7FCF3 /* AXTextView.m */,
127 | 9132E32917E2CF0400E7FCF3 /* AXTextView_Internal.h */,
128 | 9132E32D17E2DBE700E7FCF3 /* AXTextContainerView.h */,
129 | 9132E32E17E2DBE700E7FCF3 /* AXTextContainerView.m */,
130 | 9132E32A17E2D9CE00E7FCF3 /* AXTextReadingContentView.h */,
131 | 9132E32B17E2D9CE00E7FCF3 /* AXTextReadingContentView.m */,
132 | );
133 | name = "Custom Text View";
134 | sourceTree = "";
135 | };
136 | /* End PBXGroup section */
137 |
138 | /* Begin PBXNativeTarget section */
139 | 9132E2EA17E2C7F900E7FCF3 /* ReadingContent */ = {
140 | isa = PBXNativeTarget;
141 | buildConfigurationList = 9132E31717E2C7F900E7FCF3 /* Build configuration list for PBXNativeTarget "ReadingContent" */;
142 | buildPhases = (
143 | 9132E2E717E2C7F900E7FCF3 /* Sources */,
144 | 9132E2E817E2C7F900E7FCF3 /* Frameworks */,
145 | 9132E2E917E2C7F900E7FCF3 /* Resources */,
146 | );
147 | buildRules = (
148 | );
149 | dependencies = (
150 | );
151 | name = ReadingContent;
152 | productName = ReadingContent;
153 | productReference = 9132E2EB17E2C7F900E7FCF3 /* ReadingContent.app */;
154 | productType = "com.apple.product-type.application";
155 | };
156 | /* End PBXNativeTarget section */
157 |
158 | /* Begin PBXProject section */
159 | 9132E2E317E2C7F900E7FCF3 /* Project object */ = {
160 | isa = PBXProject;
161 | attributes = {
162 | CLASSPREFIX = AX;
163 | LastUpgradeCheck = 0500;
164 | ORGANIZATIONNAME = "Apple Inc";
165 | };
166 | buildConfigurationList = 9132E2E617E2C7F900E7FCF3 /* Build configuration list for PBXProject "ReadingContent" */;
167 | compatibilityVersion = "Xcode 3.2";
168 | developmentRegion = English;
169 | hasScannedForEncodings = 0;
170 | knownRegions = (
171 | en,
172 | );
173 | mainGroup = 9132E2E217E2C7F900E7FCF3;
174 | productRefGroup = 9132E2EC17E2C7F900E7FCF3 /* Products */;
175 | projectDirPath = "";
176 | projectRoot = "";
177 | targets = (
178 | 9132E2EA17E2C7F900E7FCF3 /* ReadingContent */,
179 | );
180 | };
181 | /* End PBXProject section */
182 |
183 | /* Begin PBXResourcesBuildPhase section */
184 | 9132E2E917E2C7F900E7FCF3 /* Resources */ = {
185 | isa = PBXResourcesBuildPhase;
186 | buildActionMask = 2147483647;
187 | files = (
188 | 9132E2F917E2C7F900E7FCF3 /* InfoPlist.strings in Resources */,
189 | 9132E30117E2C7F900E7FCF3 /* Images.xcassets in Resources */,
190 | 9132E32517E2C92F00E7FCF3 /* Main.storyboard in Resources */,
191 | );
192 | runOnlyForDeploymentPostprocessing = 0;
193 | };
194 | /* End PBXResourcesBuildPhase section */
195 |
196 | /* Begin PBXSourcesBuildPhase section */
197 | 9132E2E717E2C7F900E7FCF3 /* Sources */ = {
198 | isa = PBXSourcesBuildPhase;
199 | buildActionMask = 2147483647;
200 | files = (
201 | 9132E32F17E2DBE700E7FCF3 /* AXTextContainerView.m in Sources */,
202 | 9132E32217E2C86000E7FCF3 /* AXTextView.m in Sources */,
203 | 9132E31F17E2C83100E7FCF3 /* AXTextViewController.m in Sources */,
204 | 9132E32C17E2D9CE00E7FCF3 /* AXTextReadingContentView.m in Sources */,
205 | 9132E2FB17E2C7F900E7FCF3 /* main.m in Sources */,
206 | 91E9CD3617E2DD5400B90BFB /* AXPagedViewController.m in Sources */,
207 | 9132E2FF17E2C7F900E7FCF3 /* AXAppDelegate.m in Sources */,
208 | );
209 | runOnlyForDeploymentPostprocessing = 0;
210 | };
211 | /* End PBXSourcesBuildPhase section */
212 |
213 | /* Begin PBXVariantGroup section */
214 | 9132E2F717E2C7F900E7FCF3 /* InfoPlist.strings */ = {
215 | isa = PBXVariantGroup;
216 | children = (
217 | 9132E2F817E2C7F900E7FCF3 /* en */,
218 | );
219 | name = InfoPlist.strings;
220 | sourceTree = "";
221 | };
222 | /* End PBXVariantGroup section */
223 |
224 | /* Begin XCBuildConfiguration section */
225 | 9132E31517E2C7F900E7FCF3 /* Debug */ = {
226 | isa = XCBuildConfiguration;
227 | buildSettings = {
228 | ALWAYS_SEARCH_USER_PATHS = NO;
229 | ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
230 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
231 | CLANG_CXX_LIBRARY = "libc++";
232 | CLANG_ENABLE_MODULES = YES;
233 | CLANG_ENABLE_OBJC_ARC = YES;
234 | CLANG_WARN_BOOL_CONVERSION = YES;
235 | CLANG_WARN_CONSTANT_CONVERSION = YES;
236 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
237 | CLANG_WARN_EMPTY_BODY = YES;
238 | CLANG_WARN_ENUM_CONVERSION = YES;
239 | CLANG_WARN_INT_CONVERSION = YES;
240 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
241 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
242 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
243 | COPY_PHASE_STRIP = NO;
244 | GCC_C_LANGUAGE_STANDARD = gnu99;
245 | GCC_DYNAMIC_NO_PIC = NO;
246 | GCC_OPTIMIZATION_LEVEL = 0;
247 | GCC_PREPROCESSOR_DEFINITIONS = (
248 | "DEBUG=1",
249 | "$(inherited)",
250 | );
251 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
252 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
253 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
254 | GCC_WARN_UNDECLARED_SELECTOR = YES;
255 | GCC_WARN_UNINITIALIZED_AUTOS = YES;
256 | GCC_WARN_UNUSED_FUNCTION = YES;
257 | GCC_WARN_UNUSED_VARIABLE = YES;
258 | IPHONEOS_DEPLOYMENT_TARGET = 7.0;
259 | ONLY_ACTIVE_ARCH = YES;
260 | SDKROOT = iphoneos;
261 | };
262 | name = Debug;
263 | };
264 | 9132E31617E2C7F900E7FCF3 /* Release */ = {
265 | isa = XCBuildConfiguration;
266 | buildSettings = {
267 | ALWAYS_SEARCH_USER_PATHS = NO;
268 | ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
269 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
270 | CLANG_CXX_LIBRARY = "libc++";
271 | CLANG_ENABLE_MODULES = YES;
272 | CLANG_ENABLE_OBJC_ARC = YES;
273 | CLANG_WARN_BOOL_CONVERSION = YES;
274 | CLANG_WARN_CONSTANT_CONVERSION = YES;
275 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
276 | CLANG_WARN_EMPTY_BODY = YES;
277 | CLANG_WARN_ENUM_CONVERSION = YES;
278 | CLANG_WARN_INT_CONVERSION = YES;
279 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
280 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
281 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
282 | COPY_PHASE_STRIP = YES;
283 | ENABLE_NS_ASSERTIONS = NO;
284 | GCC_C_LANGUAGE_STANDARD = gnu99;
285 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
286 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
287 | GCC_WARN_UNDECLARED_SELECTOR = YES;
288 | GCC_WARN_UNINITIALIZED_AUTOS = YES;
289 | GCC_WARN_UNUSED_FUNCTION = YES;
290 | GCC_WARN_UNUSED_VARIABLE = YES;
291 | IPHONEOS_DEPLOYMENT_TARGET = 7.0;
292 | SDKROOT = iphoneos;
293 | VALIDATE_PRODUCT = YES;
294 | };
295 | name = Release;
296 | };
297 | 9132E31817E2C7F900E7FCF3 /* Debug */ = {
298 | isa = XCBuildConfiguration;
299 | buildSettings = {
300 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
301 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
302 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
303 | GCC_PREFIX_HEADER = "ReadingContent/ReadingContent-Prefix.pch";
304 | INFOPLIST_FILE = "ReadingContent/ReadingContent-Info.plist";
305 | PRODUCT_NAME = "$(TARGET_NAME)";
306 | WRAPPER_EXTENSION = app;
307 | };
308 | name = Debug;
309 | };
310 | 9132E31917E2C7F900E7FCF3 /* Release */ = {
311 | isa = XCBuildConfiguration;
312 | buildSettings = {
313 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
314 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
315 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
316 | GCC_PREFIX_HEADER = "ReadingContent/ReadingContent-Prefix.pch";
317 | INFOPLIST_FILE = "ReadingContent/ReadingContent-Info.plist";
318 | PRODUCT_NAME = "$(TARGET_NAME)";
319 | WRAPPER_EXTENSION = app;
320 | };
321 | name = Release;
322 | };
323 | /* End XCBuildConfiguration section */
324 |
325 | /* Begin XCConfigurationList section */
326 | 9132E2E617E2C7F900E7FCF3 /* Build configuration list for PBXProject "ReadingContent" */ = {
327 | isa = XCConfigurationList;
328 | buildConfigurations = (
329 | 9132E31517E2C7F900E7FCF3 /* Debug */,
330 | 9132E31617E2C7F900E7FCF3 /* Release */,
331 | );
332 | defaultConfigurationIsVisible = 0;
333 | defaultConfigurationName = Release;
334 | };
335 | 9132E31717E2C7F900E7FCF3 /* Build configuration list for PBXNativeTarget "ReadingContent" */ = {
336 | isa = XCConfigurationList;
337 | buildConfigurations = (
338 | 9132E31817E2C7F900E7FCF3 /* Debug */,
339 | 9132E31917E2C7F900E7FCF3 /* Release */,
340 | );
341 | defaultConfigurationIsVisible = 0;
342 | defaultConfigurationName = Release;
343 | };
344 | /* End XCConfigurationList section */
345 | };
346 | rootObject = 9132E2E317E2C7F900E7FCF3 /* Project object */;
347 | }
348 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASSliderViewController~ipad.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1296
5 | 11D50
6 | 2182
7 | 1138.32
8 | 568.00
9 |
13 |
14 | IBUISlider
15 | IBUIView
16 | IBUILabel
17 | IBProxyObject
18 |
19 |
20 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
21 |
22 |
26 |
27 |
31 |
35 |
186 |
187 |
188 |
189 |
190 |
191 | view
192 |
193 |
194 |
195 | 5
196 |
197 |
198 |
199 | stockSlider
200 |
201 |
202 |
203 | 8
204 |
205 |
206 |
207 | pageSlider
208 |
209 |
210 |
211 | 13
212 |
213 |
214 |
215 | customPageSlider
216 |
217 |
218 |
219 | 14
220 |
221 |
222 |
223 | valueChanged:
224 |
225 |
226 | 13
227 |
228 | 10
229 |
230 |
231 |
232 | valueChanged:
233 |
234 |
235 | 13
236 |
237 | 12
238 |
239 |
240 |
241 | valueChanged:
242 |
243 |
244 | 13
245 |
246 | 11
247 |
248 |
249 |
250 |
251 |
252 | 0
253 |
254 |
255 |
256 |
257 |
258 | -1
259 |
260 |
261 | File's Owner
262 |
263 |
264 | -2
265 |
266 |
267 |
268 |
269 | 2
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 | 3
283 |
284 |
285 |
286 |
287 | 4
288 |
289 |
290 |
291 |
292 | 6
293 |
294 |
295 |
296 |
297 | 15
298 |
299 |
300 |
301 |
302 | 16
303 |
304 |
305 |
306 |
307 | 17
308 |
309 |
310 |
311 |
312 |
313 |
314 | ASSliderViewController
315 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
316 | UIResponder
317 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
318 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
319 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
320 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
321 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
322 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
323 | ASCustomizedPageSlider
324 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
325 | ASPageSlider
326 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
327 |
328 |
329 |
330 |
331 |
332 | 17
333 |
334 |
335 |
336 |
337 | ASCustomizedPageSlider
338 | UIControl
339 |
340 | IBProjectSource
341 | ./Classes/ASCustomizedPageSlider.h
342 |
343 |
344 |
345 | ASPageSlider
346 | UISlider
347 |
348 | IBProjectSource
349 | ./Classes/ASPageSlider.h
350 |
351 |
352 |
353 | ASSliderViewController
354 | ASViewController
355 |
356 | valueChanged:
357 | id
358 |
359 |
360 | valueChanged:
361 |
362 | valueChanged:
363 | id
364 |
365 |
366 |
367 | ASCustomizedPageSlider
368 | ASPageSlider
369 | UISlider
370 |
371 |
372 |
373 | customPageSlider
374 | ASCustomizedPageSlider
375 |
376 |
377 | pageSlider
378 | ASPageSlider
379 |
380 |
381 | stockSlider
382 | UISlider
383 |
384 |
385 |
386 | IBProjectSource
387 | ./Classes/ASSliderViewController.h
388 |
389 |
390 |
391 | ASViewController
392 | UIViewController
393 |
394 | IBProjectSource
395 | ./Classes/ASViewController.h
396 |
397 |
398 |
399 |
400 | 0
401 | IBIPadFramework
402 |
403 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
404 |
405 |
406 | YES
407 | 3
408 | 1181
409 |
410 |
411 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASSliderViewController~iphone.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1296
5 | 11D50
6 | 2182
7 | 1138.32
8 | 568.00
9 |
10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
11 | 1181
12 |
13 |
14 | IBUISlider
15 | IBUIView
16 | IBUILabel
17 | IBProxyObject
18 |
19 |
20 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
21 |
22 |
23 | PluginDependencyRecalculationVersion
24 |
25 |
26 |
27 |
28 | IBFilesOwner
29 | IBCocoaTouchFramework
30 |
31 |
32 | IBFirstResponder
33 | IBCocoaTouchFramework
34 |
35 |
36 |
37 | 274
38 |
39 |
40 |
41 | 290
42 | {{18, 81}, {284, 23}}
43 |
44 |
45 |
46 | _NS:9
47 | NO
48 | IBCocoaTouchFramework
49 | 0
50 | 0
51 | 1
52 | 1
53 | 20
54 |
55 |
56 |
57 | 292
58 | {{20, 20}, {280, 53}}
59 |
60 |
61 |
62 | _NS:9
63 | NO
64 | YES
65 | 7
66 | NO
67 | IBCocoaTouchFramework
68 | Example of UISlider with no special configuration
69 |
70 | 1
71 | MCAwIDAAA
72 |
73 |
74 | 0
75 | 10
76 | 3
77 | 1
78 |
79 | 1
80 | 17
81 |
82 |
83 | Helvetica
84 | 17
85 | 16
86 |
87 | NO
88 |
89 |
90 |
91 | 292
92 | {{20, 158}, {280, 53}}
93 |
94 |
95 |
96 | _NS:9
97 | NO
98 | YES
99 | 7
100 | NO
101 | IBCocoaTouchFramework
102 | Example of UISlider subclass, configured to report page number
103 |
104 |
105 | 0
106 | 10
107 | 3
108 | 1
109 |
110 |
111 | NO
112 |
113 |
114 |
115 | 292
116 | {{20, 290}, {280, 75}}
117 |
118 |
119 |
120 | _NS:9
121 | NO
122 | YES
123 | 7
124 | NO
125 | IBCocoaTouchFramework
126 | Example of custom UIControl subclass to make a faux UISlider, configured to report page number
127 |
128 |
129 | 0
130 | 10
131 | 3
132 | 1
133 |
134 |
135 | NO
136 |
137 |
138 |
139 | 298
140 | {{18, 219}, {284, 23}}
141 |
142 |
143 |
144 | _NS:9
145 | NO
146 |
147 |
148 |
149 | IBCocoaTouchFramework
150 | 0
151 | 0
152 | 1
153 | 1
154 | 20
155 |
156 |
157 |
158 | 266
159 | {{20, 373}, {280, 40}}
160 |
161 |
162 |
163 | _NS:9
164 |
165 | 3
166 | MQA
167 |
168 | 2
169 |
170 |
171 | IBCocoaTouchFramework
172 |
173 |
174 | {320, 460}
175 |
176 |
177 |
178 | _NS:9
179 |
180 | 3
181 | MQA
182 |
183 |
184 | IBCocoaTouchFramework
185 |
186 |
187 |
188 |
189 |
190 |
191 | view
192 |
193 |
194 |
195 | 3
196 |
197 |
198 |
199 | stockSlider
200 |
201 |
202 |
203 | 7
204 |
205 |
206 |
207 | pageSlider
208 |
209 |
210 |
211 | 10
212 |
213 |
214 |
215 | customPageSlider
216 |
217 |
218 |
219 | 11
220 |
221 |
222 |
223 | valueChanged:
224 |
225 |
226 | 13
227 |
228 | 14
229 |
230 |
231 |
232 | valueChanged:
233 |
234 |
235 | 13
236 |
237 | 13
238 |
239 |
240 |
241 | valueChanged:
242 |
243 |
244 | 13
245 |
246 | 12
247 |
248 |
249 |
250 |
251 |
252 | 0
253 |
254 |
255 |
256 |
257 |
258 | -1
259 |
260 |
261 | File's Owner
262 |
263 |
264 | -2
265 |
266 |
267 |
268 |
269 | 2
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 | 4
283 |
284 |
285 |
286 |
287 | 5
288 |
289 |
290 |
291 |
292 | 6
293 |
294 |
295 |
296 |
297 | 15
298 |
299 |
300 |
301 |
302 | 16
303 |
304 |
305 |
306 |
307 | 17
308 |
309 |
310 |
311 |
312 |
313 |
314 | ASSliderViewController
315 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
316 | UIResponder
317 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
318 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
319 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
320 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
321 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
322 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
323 | ASPageSlider
324 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
325 | ASCustomizedPageSlider
326 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
327 |
328 |
329 |
330 |
331 |
332 | 17
333 |
334 |
335 |
336 |
337 | ASCustomizedPageSlider
338 | UIControl
339 |
340 | IBProjectSource
341 | ./Classes/ASCustomizedPageSlider.h
342 |
343 |
344 |
345 | ASPageSlider
346 | UISlider
347 |
348 | IBProjectSource
349 | ./Classes/ASPageSlider.h
350 |
351 |
352 |
353 | ASSliderViewController
354 | ASViewController
355 |
356 | valueChanged:
357 | id
358 |
359 |
360 | valueChanged:
361 |
362 | valueChanged:
363 | id
364 |
365 |
366 |
367 | ASCustomizedPageSlider
368 | ASPageSlider
369 | UISlider
370 |
371 |
372 |
373 | customPageSlider
374 | ASCustomizedPageSlider
375 |
376 |
377 | pageSlider
378 | ASPageSlider
379 |
380 |
381 | stockSlider
382 | UISlider
383 |
384 |
385 |
386 | IBProjectSource
387 | ./Classes/ASSliderViewController.h
388 |
389 |
390 |
391 | ASViewController
392 | UIViewController
393 |
394 | IBProjectSource
395 | ./Classes/ASViewController.h
396 |
397 |
398 |
399 |
400 | 0
401 | IBCocoaTouchFramework
402 |
403 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
404 |
405 |
406 | YES
407 | 3
408 | 1181
409 |
410 |
411 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASSegmentedControlViewController~ipad.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1296
5 | 11D50
6 | 2182
7 | 1138.32
8 | 568.00
9 |
10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
11 | 1181
12 |
13 |
14 | IBUISegmentedControl
15 | IBUIView
16 | IBUILabel
17 | IBProxyObject
18 |
19 |
20 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
21 |
22 |
23 | PluginDependencyRecalculationVersion
24 |
25 |
26 |
27 |
28 | IBFilesOwner
29 | IBIPadFramework
30 |
31 |
32 | IBFirstResponder
33 | IBIPadFramework
34 |
35 |
36 |
37 | 292
38 |
39 |
40 |
41 | 292
42 | {{179, 132}, {410, 21}}
43 |
44 |
45 |
46 | _NS:9
47 | NO
48 | YES
49 | 7
50 | NO
51 | IBIPadFramework
52 | Example Of Segmented Control Using Text Segments
53 |
54 | 1
55 | MCAwIDAAA
56 |
57 |
58 | 0
59 | 10
60 | 1
61 |
62 | 1
63 | 17
64 |
65 |
66 | Helvetica
67 | 17
68 | 16
69 |
70 |
71 |
72 |
73 | 292
74 | {{281, 180}, {207, 44}}
75 |
76 |
77 |
78 | _NS:9
79 | NO
80 | IBIPadFramework
81 | 2
82 | 0
83 |
84 | First
85 | Second
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 | {0, 0}
97 | {0, 0}
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | 292
107 | {{172, 255}, {424, 21}}
108 |
109 |
110 |
111 | _NS:9
112 | NO
113 | YES
114 | 7
115 | NO
116 | IBIPadFramework
117 | Example Of Segmented Control Using Image Segments
118 |
119 |
120 | 0
121 | 10
122 |
123 |
124 |
125 |
126 |
127 | 292
128 | {{281, 305}, {207, 44}}
129 |
130 |
131 |
132 | _NS:9
133 | NO
134 | IBIPadFramework
135 | 2
136 | 0
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 | {0, 0}
151 | {0, 0}
152 |
153 |
154 |
155 | NSImage
156 | SegmentedControlFirstTabImage copy.png
157 |
158 |
159 | NSImage
160 | SegmentedControlSecondTabImage copy.png
161 |
162 |
163 |
164 |
165 |
166 | 292
167 | {{76, 375}, {617, 21}}
168 |
169 |
170 |
171 | _NS:9
172 | NO
173 | YES
174 | 7
175 | NO
176 | IBIPadFramework
177 | Example Of Segmented Control Using Image Segments With Accessibility Labels
178 |
179 |
180 | 0
181 | 10
182 |
183 |
184 |
185 |
186 |
187 | 292
188 | {{281, 420}, {207, 44}}
189 |
190 |
191 | _NS:9
192 | NO
193 | IBIPadFramework
194 | 2
195 | 0
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 | {0, 0}
210 | {0, 0}
211 |
212 |
213 |
214 | NSImage
215 | SegmentedControlFirstTabImage.png
216 |
217 |
218 | NSImage
219 | SegmentedControlSecondTabImage.png
220 |
221 |
222 |
223 |
224 | {{0, 64}, {768, 960}}
225 |
226 |
227 |
228 | _NS:9
229 |
230 | 3
231 | MQA
232 |
233 | 2
234 |
235 |
236 |
237 | 2
238 |
239 |
240 | NO
241 |
242 | IBIPadFramework
243 |
244 |
245 |
246 |
247 |
248 |
249 | view
250 |
251 |
252 |
253 | 3
254 |
255 |
256 |
257 | segmentedControlAccessibleImages
258 |
259 |
260 |
261 | 14
262 |
263 |
264 |
265 | segmentedControlText
266 |
267 |
268 |
269 | 16
270 |
271 |
272 |
273 | segmentedControlImages
274 |
275 |
276 |
277 | 18
278 |
279 |
280 |
281 |
282 |
283 | 0
284 |
285 |
286 |
287 |
288 |
289 | -1
290 |
291 |
292 | File's Owner
293 |
294 |
295 | -2
296 |
297 |
298 |
299 |
300 | 2
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 | 8
314 |
315 |
316 |
317 |
318 | 10
319 |
320 |
321 |
322 |
323 | 11
324 |
325 |
326 |
327 |
328 | 12
329 |
330 |
331 |
332 |
333 | 13
334 |
335 |
336 |
337 |
338 | 17
339 |
340 |
341 |
342 |
343 |
344 |
345 | ASSegmentedControlViewController
346 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
347 | UIResponder
348 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
349 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
350 |
351 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
352 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
353 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
354 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
355 |
356 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
357 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
358 |
359 |
360 |
361 |
362 |
363 | 18
364 |
365 |
366 |
367 |
368 | ASSegmentedControlViewController
369 | ASViewController
370 |
371 | UISegmentedControl
372 | UISegmentedControl
373 | UISegmentedControl
374 |
375 |
376 |
377 | segmentedControlAccessibleImages
378 | UISegmentedControl
379 |
380 |
381 | segmentedControlImages
382 | UISegmentedControl
383 |
384 |
385 | segmentedControlText
386 | UISegmentedControl
387 |
388 |
389 |
390 | IBProjectSource
391 | ./Classes/ASSegmentedControlViewController.h
392 |
393 |
394 |
395 | ASViewController
396 | UIViewController
397 |
398 | IBProjectSource
399 | ./Classes/ASViewController.h
400 |
401 |
402 |
403 |
404 | 0
405 | IBIPadFramework
406 |
407 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
408 |
409 |
410 | YES
411 | 3
412 |
413 | {60, 30}
414 | {60, 30}
415 | {60, 30}
416 | {60, 30}
417 |
418 | 1181
419 |
420 |
421 |
--------------------------------------------------------------------------------
/AccessibilitySuite/AccessibilitySuite/ASSegmentedControlViewController~iphone.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1296
5 | 11D50
6 | 2182
7 | 1138.32
8 | 568.00
9 |
10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
11 | 1181
12 |
13 |
14 | IBUISegmentedControl
15 | IBUIView
16 | IBUILabel
17 | IBProxyObject
18 |
19 |
20 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
21 |
22 |
23 | PluginDependencyRecalculationVersion
24 |
25 |
26 |
27 |
28 | IBFilesOwner
29 | IBCocoaTouchFramework
30 |
31 |
32 | IBFirstResponder
33 | IBCocoaTouchFramework
34 |
35 |
36 |
37 | 292
38 |
39 |
40 |
41 | 292
42 | {{20, 20}, {280, 42}}
43 |
44 |
45 |
46 | _NS:9
47 | NO
48 | YES
49 | 7
50 | NO
51 | IBCocoaTouchFramework
52 | RXhhbXBsZSBPZiBTZWdtZW50ZWQgQ29udHJvbApVc2luZyBUZXh0IFNlZ21lbnRzA
53 |
54 | 1
55 | MCAwIDAAA
56 |
57 |
58 | 0
59 | 10
60 | 2
61 |
62 | 1
63 | 17
64 |
65 |
66 | Helvetica
67 | 17
68 | 16
69 |
70 |
71 |
72 |
73 | 292
74 | {{57, 70}, {207, 44}}
75 |
76 |
77 |
78 | _NS:9
79 | NO
80 | IBCocoaTouchFramework
81 | 2
82 | 0
83 |
84 | Left
85 | Right
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 | {0, 0}
97 | {0, 0}
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | 292
107 | {{20, 121}, {280, 42}}
108 |
109 |
110 |
111 | _NS:9
112 | NO
113 | YES
114 | 7
115 | NO
116 | IBCocoaTouchFramework
117 | RXhhbXBsZSBPZiBTZWdtZW50ZWQgQ29udHJvbApVc2luZyBJbWFnZSBTZWdtZW50cw
118 |
119 |
120 | 0
121 | 10
122 | 2
123 |
124 |
125 |
126 |
127 |
128 | 292
129 | {{57, 171}, {207, 44}}
130 |
131 |
132 |
133 | _NS:9
134 | NO
135 | IBCocoaTouchFramework
136 | 2
137 | 0
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 | {0, 0}
152 | {0, 0}
153 |
154 |
155 |
156 | NSImage
157 | SegmentedControlFirstTabImage copy.png
158 |
159 |
160 | NSImage
161 | SegmentedControlSecondTabImage copy.png
162 |
163 |
164 |
165 |
166 |
167 | 292
168 | {{20, 222}, {280, 63}}
169 |
170 |
171 |
172 | _NS:9
173 | NO
174 | YES
175 | 7
176 | NO
177 | IBCocoaTouchFramework
178 | RXhhbXBsZSBPZiBTZWdtZW50ZWQgQ29udHJvbApVc2luZyBJbWFnZSBTZWdtZW50cyAKV2l0aCBBY2Nl
179 | c3NpYmlsaXR5IExhYmVscw
180 |
181 |
182 | 0
183 | 10
184 | 3
185 |
186 |
187 |
188 |
189 |
190 | 292
191 | {{57, 293}, {207, 44}}
192 |
193 |
194 | _NS:9
195 | NO
196 | IBCocoaTouchFramework
197 | 2
198 | 0
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 | {0, 0}
213 | {0, 0}
214 |
215 |
216 |
217 | NSImage
218 | SegmentedControlFirstTabImage.png
219 |
220 |
221 | NSImage
222 | SegmentedControlSecondTabImage.png
223 |
224 |
225 |
226 |
227 | {{0, 64}, {320, 416}}
228 |
229 |
230 |
231 | _NS:9
232 |
233 | 3
234 | MQA
235 |
236 | 2
237 |
238 |
239 |
240 |
241 | NO
242 |
243 | IBCocoaTouchFramework
244 |
245 |
246 |
247 |
248 |
249 |
250 | view
251 |
252 |
253 |
254 | 3
255 |
256 |
257 |
258 | segmentedControlText
259 |
260 |
261 |
262 | 8
263 |
264 |
265 |
266 | segmentedControlImages
267 |
268 |
269 |
270 | 9
271 |
272 |
273 |
274 | segmentedControlAccessibleImages
275 |
276 |
277 |
278 | 12
279 |
280 |
281 |
282 |
283 |
284 | 0
285 |
286 |
287 |
288 |
289 |
290 | -1
291 |
292 |
293 | File's Owner
294 |
295 |
296 | -2
297 |
298 |
299 |
300 |
301 | 2
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 | 4
315 |
316 |
317 |
318 |
319 | 5
320 |
321 |
322 |
323 |
324 | 11
325 |
326 |
327 |
328 |
329 | 13
330 |
331 |
332 |
333 |
334 | 14
335 |
336 |
337 |
338 |
339 | 15
340 |
341 |
342 |
343 |
344 |
345 |
346 | ASSegmentedControlViewController
347 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
348 | UIResponder
349 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
350 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
351 |
352 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
353 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
354 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
355 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
356 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
357 |
358 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin
359 |
360 |
361 |
362 |
363 |
364 |
365 | 15
366 |
367 |
368 |
369 |
370 | ASSegmentedControlViewController
371 | ASViewController
372 |
373 | UISegmentedControl
374 | UISegmentedControl
375 | UISegmentedControl
376 |
377 |
378 |
379 | segmentedControlAccessibleImages
380 | UISegmentedControl
381 |
382 |
383 | segmentedControlImages
384 | UISegmentedControl
385 |
386 |
387 | segmentedControlText
388 | UISegmentedControl
389 |
390 |
391 |
392 | IBProjectSource
393 | ./Classes/ASSegmentedControlViewController.h
394 |
395 |
396 |
397 | ASViewController
398 | UIViewController
399 |
400 | IBProjectSource
401 | ./Classes/ASViewController.h
402 |
403 |
404 |
405 |
406 | 0
407 | IBCocoaTouchFramework
408 |
409 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
410 |
411 |
412 | YES
413 | 3
414 |
415 | {60, 30}
416 | {60, 30}
417 | {60, 30}
418 | {60, 30}
419 |
420 | 1181
421 |
422 |
423 |
--------------------------------------------------------------------------------
/AccessibilityReadingContent/ReadingContent/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
--------------------------------------------------------------------------------