1

カスタム uiview で Core Graphics を使用して描画されている 2 つのフレーム ベースのアクセシビリティ要素のコンテナーを作成しています。

2 つの要素 (この場合は 2 つのカーソル) が 1 本の指の上下のスライドに応答するようにしたいので、 trait を使用していますUIAccessibilityTraitAdjustable

Appleのドキュメントに記載されているように、プロトコルを実装しました。accessibilityIncrement2 つの要素を選択することはできますが、1 本の指でスクロールしても呼び出されないようですaccessibilityDecrement。私が見逃したものはありますか?

-(NSArray *)accessibleElements 
{    
    if (_accessibleElements != nil) {
        return _accessibleElements;
    }

    _accessibleElements = [[NSMutableArray alloc] init];

    //add left cursor
    UIAccessibilityElement *lcursorEl = [[UIAccessibilityElement alloc]
                                            initWithAccessibilityContainer:self];
    lcursorEl.accessibilityFrame = [self convertRect:_lcursorFrame
                                                 toView:nil];
    lcursorEl.accessibilityLabel = NSLocalizedString(@"Left Cursor", nil);
    lcursorEl.accessibilityTraits = UIAccessibilityTraitAdjustable;
    [_accessibleElements addObject:lcursorEl];

    //add right cursor

    UIAccessibilityElement *rcursorEl = [[UIAccessibilityElement alloc]
                                         initWithAccessibilityContainer:self];
    rcursorEl.accessibilityFrame = [self convertRect:_rcursorFrame
                                              toView:nil];
    rcursorEl.accessibilityLabel = NSLocalizedString(@"Right Cursor", nil);
    //rcursorEl.accessibilityTraits = UIAccessibilityTraitAdjustable ;
    [_accessibleElements addObject:rcursorEl];

    return _accessibleElements;
}


#pragma mark accessible elements protocol methods

- (NSInteger)accessibilityElementCount
{
    return [[self accessibleElements] count];
}

- (id)accessibilityElementAtIndex:(NSInteger)index
{
    return [[self accessibleElements] objectAtIndex:index];
}

- (NSInteger)indexOfAccessibilityElement:(id)element
{
    return [[self accessibleElements] indexOfObject:element];
}

- (BOOL)isAccessibilityElement
{
    return NO;
}

-(void)accessibilityIncrement 
{  
   NSLog(@"Adjusting Inc");
}

-(void)accessibilityDecrement 
{
    NSLog(@"Adjusting dec");
}
4

1 に答える 1

1

accessibilityIncrement作成しているアクセシビリティ要素に調整可能な特性を設定しているためaccessibilityDecrement、コントローラーではなくそれらの要素で呼び出されます。そのため、コールバックが表示されません。

UIAccessibilityElement代わりに、そこでインクリメント メソッドとデクリメント メソッドをサブクラス化して実装することができます。

于 2013-06-28T09:00:06.343 に答える