키보드 전용 사용자가 ScrollView에서 다른 UI 요소 사이를 탐색하려고 할 때 어떻게하면 자동으로 scrollView를 스크롤 할 수 있는지 알려주실 수 있습니까? 'Tab'키? "TAB"키를 누르면 스크롤 뷰에있는 다른 UI 요소로 포커스가 이동하지만 보이는 요소 뷰에 UI 요소가 없으면 스크롤하지 않습니다. 이것이 어떻게 달성 될 수 있는가. 도움을 주시면 감사하겠습니다. 감사.접근성 : ScrollView를 사용하여 "TAB"을 치면 볼 수없는보기로 자동 스크롤
6
A
답변
3
솔루션 A : NSWindow
의 하위 클래스를 만들고 makeFirstResponder:
을 재정의하십시오. makeFirstResponder
은 첫 번째 응답자가 변경 될 때 호출됩니다.
- (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;
}
솔루션 B : NSTextField
및 기타 컨트롤의 서브 클래스를 생성하고 becomeFirstResponder
우선합니다.
- (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
고맙습니다. @ 윌크. 나는 비슷한 것을 시도했지만 효과가 없었습니다. NSWindow에서 그것을하는 것은 매력처럼 작동합니다. –
코드로 스크롤 하시겠습니까? 뭐 해봤 니? – Willeke
예. 뷰가 포커스를 얻고 scrollView의 보이는 영역에 없을 때마다 스크롤이 자동으로 수행되기를 원합니다. 'autoscroll :'시도를 실패했습니다. 나는 무엇을 해야할지 전혀 모른다. 당신이 내 요구 사항을 가지고 있기를 바랍니다. 의견을 부탁합니다. –
'[view scrollRectToVisible : view.bounds]'를 사용해보십시오. – Willeke