簡體   English   中英

關閉表格視圖中單元格的畫外音焦點,而不是其他單元格

[英]Turning off Voice-over focus for a cell in table view and not for others

我的表格視圖中的第一個單元格是一個虛擬單元格,因此,當畫外音模式打開時,我想跳過該單元格,以便焦點不會落在該控件上,因此,語音不會說出它的任何特征超過。 我寫了下面粘貼的代碼來實現相同的目的,認為僅isAccessibilityElement就足夠了。 但似乎並非如此。 盡管我說這個元素在代碼中是不可訪問的,但它仍然通過在Voice-over模式下向右/向左輕彈來獲得焦點。 關於如何實現這一點的任何想法?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
....
     UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
     if(indexPath.row == 0)
     {
          cell.isAccessibilityElement = 0;
     }
}

使用一些 cutom 單元格,並在該單元格定義中實現:

- (NSInteger)accessibilityElementCount {
    NSIndexPath *indexPath = [(UITableView *)self.superview indexPathForCell: self];
    if(indexPath.row==0){
        return 0;
    }
    else{
        return 1;
    }
}

當前執行此操作的方法似乎是將單元格上的accessibilityElementsHidden設置為true / YES (取決於是使用 Swift 還是 Obj-C。

似乎比提出的其他答案更清晰,並且在我非常簡短的測試中似乎很有效。

只需像這樣覆蓋單元格的功能accessibilityElementCount

斯威夫特 4.2:

override func accessibilityElementCount() -> Int {
   return 0
}

這並不理想,但您能否僅在 VoiceOver 未激活時顯示單元格? 您可以使用

UIAccessibilityIsVoiceOverRunning()

在您的應用程序加載時查看 VoiceOver 是否打開的功能,並注冊

@selector(voiceOverStatusChanged)

通知,以便您在用戶啟用或禁用畫外音時收到通知。 有關這方面的更多信息,請參閱以下博客文章。 < http://useyourloaf.com/blog/2012/05/14/detecting-voiceover-status-changes.html >

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM