2016-09-01 1 views
0

Ich habe mehrere UIWindows in meiner App. Einige UIWindows haben sehr hohe Fenster Ebenen. das heißtUIAccessibility ist nicht die richtigen Elemente auswählen

window.windowLevel = currentWindowLevel+1; 

Aus irgendeinem Grund, wenn sie auf die Unterstützung der Barrierefreiheit Drehen, das System besteht auf die Zugänglichkeit Etiketten von Ansichten in der unteren Ebene Fensters zu lesen, selbst in Fällen, in denen die Ansichten gar nicht sichtbar sind.

Dieses minimale Beispiel veranschaulicht dieses Verhalten.

Bei aktivierter Eingabehilfenunterstützung versuchen Sie, das Etikett im roten Fenster zu drücken. Das System wird stattdessen den Text aus der unterhalb der Tabellenansicht ausgelesener

@interface ViewController() <UITableViewDataSource> 
@property (weak, nonatomic) IBOutlet UITableView *tableview; 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.tableview.dataSource = self; 
    [self.tableview registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"]; 

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
     UIWindow *w = [[UIWindow alloc] initWithFrame:self.view.bounds]; 
     w.windowLevel = self.view.window.windowLevel + 1; 
     w.backgroundColor = [UIColor redColor]; 
     w.hidden = NO; 
     w.isAccessibilityElement = YES; 
     UILabel *l = [[UILabel alloc] init]; 
     l.text = @"KUKUKUKUKUKUKUKLU"; 
     [l sizeToFit]; 
     l.frame = CGRectOffset(l.frame, 40, 100); 
     [w addSubview:l]; 
     w.accessibilityLabel = @"Read this outloud instead"; 
     static id window; 
     window = w; 
    }); 

    // Do any additional setup after loading the view, typically from a nib. 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return 100; 
} 

// Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier: 
// Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls) 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; 
    cell.textLabel.text = @"Test"; 
    return cell; 
} 

@end 
+0

auf die Frage irrelevant Das ist. Ich habe auf jeden Fall eine Antwort geliefert –

Antwort

1

Lösung zu setzen, ist das Attribut

Window.accessibilityViewIsModal = YES; 
Verwandte Themen