Birisi, yalnızca klavye kullanan bir kullanıcının ScrollView içindeki farklı UI Öğeleri arasında gezinmeyi denediğinde otomatik olarak nasıl kaydırma yapabilirim? 'Tab tuşu? "TAB" tuşuna bastığımda, odak scrollView'de bulunan farklı UI öğesine kaydırılır, ancak UI Öğesi Görünür İçerik Görünümünde mevcut değilse kaydırma yapmaz. Bu nasıl başarılabilir? Yardım takdir edilecektir. Teşekkürler.Erişilebilirlik: Kaydırma sırasında görünmeyen görünüme otomatik olarak kaydırmak için Kaydırma Görünümü "TAB"
6
A
cevap
3
Çözüm A: NSWindow
'un bir alt sınıfını oluşturun ve makeFirstResponder:
'u geçersiz kılın. İlk cevaplayıcı değiştiğinde makeFirstResponder
çağrılır.
- (BOOL)makeFirstResponder:(NSResponder *)responder {
BOOL madeFirstResponder = [super makeFirstResponder:responder];
if (madeFirstResponder) {
id view = [self firstResponder];
// check if the new first responder is a field editor
if (view && [view isKindOfClass:[NSTextView class]] && [view isFieldEditor])
view = [view delegate]; // the control, usually a NSTextField
if (view && [view isKindOfClass:[NSControl class]] && [view enclosingScrollView]) {
NSRect rect = [view bounds];
rect = NSInsetRect(rect, -10.0, -10.0); // add a margin
[view scrollRectToVisible:rect];
}
}
return madeFirstResponder;
}
Çözelti B: NSTextField
ve diğer kontrollerin bir alt sınıfı oluşturun ve becomeFirstResponder
geçersiz kılar.
- (BOOL)becomeFirstResponder {
BOOL becameFirstResponder = [super becomeFirstResponder];
if (becameFirstResponder) {
if ([self enclosingScrollView]) {
NSRect rect = [self bounds];
rect = NSInsetRect(rect, -10.0, -10.0); // add a margin
[self scrollRectToVisible:rect];
}
}
return becameFirstResponder;
}
+0
Teşekkür ederiz @Willek. Buna benzer bir şey denedim ama işe yaramadı, NSWindow'da yapmak cazibe gibi çalışıyor. –
Kodda ilerlemek istiyor musunuz? Bir şey denedin mi? – Willeke
Evet. Görünümün odakta görünmesi ve scrollView'ın görünür alanında bulunmaması durumunda kaydırma işleminin otomatik olarak gerçekleşmesini istiyorum. Ben başarısızlıkla autoscroll: 'denedim. Yapmam gereken şey hakkında hiçbir fikrim yok. Umarım benim şartım vardır. Lütfen yorum yapın. –
Deneyi deneyin [view scrollRectToVisible: view.bounds] '. – Willeke