CustomContentAccessibility

CustomContentAccessbility用于展示在自定义绘制的UIView和UIControl中的可访问性,演示如何展示每个地图项的辅助元素,在容器视图中实现UIAccessibilityContainer协议与iOS辅助系统的交互。

UIAccessibility非正式协议提供了应用程序用户接口元素的辅助信息。默认情况下,标准的UIKit控制和视图实现了UIAccessibility方法,因此可以访问辅助应用。这就意味着如果你的应用如果只是用标准的控制和视图,像UIButton、UISegmentedControl或者UITableView的话,在默认值没有完成的情况下,你只需要申请应用指定的细节即可。你可以在IB里设置,也可以在这个非正式协议中设置属性。

UIAccessibility非正式协议也可由UIAccessibilityElement类来实现,该类代表了自定义的用户接口对象。如果你自己创建了一个完全的UIView子类,你可能需要创建一个UIAccessibilityElement对象来代表它,并且需要保证所有UIAccessibility属性都设置正确,返回accessibility元素属性。


1.APLAppDelegate.h

1)添加UIGuidedAccessRestrictionDelegate协议:允许你在iOS里的引导访问功能添加自定义限制。


2.APLAppDelegate.m

1)static NSString *const kControlsRestrictionIdentifier = @"com.apple.CustomContentAccessibility.ControlsRestrictionIdentifier";

创建识别码

2)声明私有变量:@property (strong, nonatomic) APLViewController *viewController;

3)在APLAppDelegate方法中添加viewController为根视图

4)实现UIGuideAccessRestrictionDelegate中的方法:

    a.- (NSString  *)detailTextForGuidedAccessRestrictionWithIdentifier:(NSString *)restrictionIdentifier :对于提供的标识符返回有关限制的更多详细信息。

    b.- (NSArray *)guidedAccessRestrictionIdentifiers :返回标识符数组。

    c.- (void)guidedAccessRestrictionWithIdentifier:(NSString *)restrictionIdentifier didChangeState:(UIGuidedAccessRestrictionState)newRestrictionState : 改变状态

    d.- (NSString *)textForGuidedAccessRestrictionWithIdentifier:(NSString *)restrictionIdentifier

其中d方法是可选的,另外三个方法必须实现,在UIGuidedAccessRestriction.h中可以查看。


3.APLCommon.h/.m

定义常量:字体大小,线条宽度,层数等


4.APLCoffeeControl.h

1)@property (nonatomic, getter = isOn) BOOL on :如果这个property是BOOL on的话,那么OC默认创建的setter和getter方法为:- (void)on:(BOOL)setOn {} 和- (BOOL)on {return on;}。但是可以手动更改setter和getter,如上面的getter = xxxOn,则getter方法为- (BOOL)xxxOn { return on; }。


5.APLCoffeeControl.m

1)添加私有方法:- (IBAction)handleSwipe:(UISwipeGestureRecognizer *)swipeGestureRecognizer;

Swipe:扫、刷的动作

2)覆写UIControl的方法:

    a.- (void)drawRect:(CGRect)rect :

        self.enabled:布尔值enabled确定接收者是否启用。

    b.绘制label:NSAttributedString *labelAttributedString = [[NSAttributedString alloc] initWithString:@"Coffee" attributes:@{ NSFontAttributeName: [UIFont boldSystemFontOfSize:kFontSize * 2.0], NSForegroundColorAttributeName : [UIColor blackColor] }];
        [labelAttributedString drawAtPoint:CGPointMake(CGRectGetMidX(bounds) - labelAttributedString.size.width * 0.5, kPadding * 2.0)];(用代码写控件时可参照)

    c.根据isOn的状态来确认开关状态的布局

    d.覆写enabled的setter方法

3)UIAccessibilityElement

    a.- (BOOL)isAccessibilityElement

    b.- (NSString *)accessibilityHint

    c.- (NSString *)accessibilityLabel

    d.- (NSString *)accessibilityValue

    e.- (UIAccessibilityTraits)accessibilityTraits

    f.- (BOOL)accessibilityActivate :激活辅助功能来处理默认动作。成功实现则返回YES,默认值是NO

4)Properties

    a.- (void)setOn:(BOOL)on

5)Actions


4.APLElevatorControl.h


5.APLElevatorControl.m

1)覆写绘制方法:-(void)drawRect:(CGRect)rect

2)UIBezierPath类让你可以定义由直线和曲线线段组成的路径,并在自定义视图中展示出来。可以只指定几何图形。路径能被定义为像矩形,圆,曲线等简单图形,也可以定义为复杂的多边形,或者直线和曲线组成的混合图形。定义图形后,可以使用额外的方法来呈现当前绘图上下文的路径。

3)[UIBezierPath bezierPathWithOvalInRect:downControlRect]; :在指定的框架里绘制一个椭圆

4)UIBezierPath对象设置填充颜色之前,要先设置好颜色,再调用方法填充:[[UIColor blackColor] fill];  [path setFill]; [[UIColor lightGrayColor] stroke]; [path setStroke];

5)[touch locationInView:self] :在给定的视图中返回接收者的坐标位置

6)UIAccessibilityElement的基本方法:

    a.NSNumberFormatter:NSNumberFormatter格式化cell的文字表述。该表述包含了NSNumber对象和将数值文本转换为NSNumber对象

    b.如果某个元素有UIAccessibilityTraitAdjustable的特点,它必须实现以下方法:

        1.- (void)accessibilityIncrement

        2.- (void)accessibilityDecrement

    c.UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil); :传递通知给辅助应用。如果你的用户界面元素改变比较快又或者出现和隐藏时,你就需要传递通知


6.APLFloorPlanView.h


7.APLFloorPlanView.m

1)UIAccessibilityContainer协议:为了让rooms和coffee这些对象不支持辅助功能,APLFloorPlanView需要通过UIAccessibilityContainer协议与iOS的辅助系统进行交互

    a.- (NSArray *)accessibilityElements :为平面图创建了Accessibility还不存在的元件并返回调用者。元件的外形由accessibilityPath表示

    b.- (BOOL)isAccessibilityElement :辅助容器必须返回NO

    c.- (id)accessibilityElementAtIndex:(NSInteger)index :基于索引返回辅助元素的顺序,默认是nil

    d.- (NSInteger)accessibilityElementCount :返回容器中的元素数目

    e.- (NSInteger)indexOfAccessibilityElement:(id)element :返回有序索引的辅助元素,默认是NSNotFound

2)平面图的图形路径:起点使用movetoPoint方法设置,addLineToPoint:方法增加两点间的线段,最后可以用closePath封闭起来

3)Properties



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值