2011-12-26 14 views
11

Kullanıcıya bir başka öğe/tablo hücresi eklediğinde, aşağı kaydırdığım bir UITableView'ım var. Ekran için bu iyi çalışır, çünkü kullanıcı tablonun en altına ekledikleri hücreyi görebilir. Ancak, uygulamanızı VoiceOver kullanarak çalıştırırken, odaklanmak ve okumak için ilk UITableCell, ekranda görünen en üstteki hücredir.Seslendirmenin odağını belirli bir tablo hücresine ayarlayın (UIAccessibility)

Odaklanan ve UITableView göründüğü anda okunduğunda bu hücrenin tablonun en son hücresi olması için onu ayarlamak istiyorum. Bunu nasıl yaparım? Çok basit gibi görünüyor ama anlayamıyorum.

if (cellJustAdded && indexPath.row == [array count]-1) { 
    cell.accessibilityElementIsFocused = YES; //obviously this does not work 
} 

ama böyle accessibilityElementIsFocused kullanabilirsiniz sanmıyorum:

Burada (cellForRowAtIndexPath olarak) şu ana kadar çalıştığı şey budur.

+0

Tamam çağırır ama anlıyorum gibi olamaz çalışmak. – Ginny

+0

'UIAccessibilityZoomFocusChanged', zoom özelliği ayarlarda açık olduğunda kullanılır. –

cevap

8

VoiceOver'ın belirli bir öğe seçmesini istediğinizde, UIAccessibilityPostNotification(...); kullanarak bir erişilebilirlik bildirimi gönderebilirsiniz. o büyük (tam ekran) değişimi ya da küçük olursa bağlı

(düzen için) Eğer gönderilmesi gerekiyor değiştirmek ya

  • UIAccessibilityScreenChangedNotification (komple değişim)
  • UIAccessibilityLayoutChangedNotification (küçük değişiklik)

Her iki durumda da isteğe bağlı argüman, VoiceOver'ın taşınması gereken öğedir.

Yani tablo görünümüne yeni hücre ilave ettikten sonra ben bu cevabı UIAccessibilityZoomFocusChanged` `ile yerde yatıyor eminim böylece

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, 
           yourNewCellThatShouldHaveFocus); 
+0

Bu şekilde birden fazla yerde benim için işe yaramıyor. Herhangi bir tahmin sebebi ne olabilir? – Dynamite

İlgili konular