2017-12-14 96 views
6

मारने पर दिखाई नहीं दे रहा है। क्या कोई मुझे बता सकता है कि मैं स्क्रॉलव्यू को स्वचालित रूप से कैसे स्क्रॉल कर सकता हूं जब कीबोर्ड-केवल उपयोगकर्ता स्क्रॉल व्यू में विभिन्न UI तत्वों के बीच नेविगेट करने का प्रयास करता है 'चाबी दबाएं? जब मैं "टैब" कुंजी दबाता हूं तो फोकस को स्क्रू व्यू में मौजूद विभिन्न यूआई तत्व में स्थानांतरित किया जाता है लेकिन यदि दृश्य तत्व दृश्य में UI तत्व मौजूद नहीं है तो यह स्क्रॉल नहीं करता है। यह कैसे हासिल किया जा सकता है। मदद की सराहना की जाएगी। धन्यवाद।अभिगम्यता: दृश्य को स्वत: स्क्रॉल करने के लिए स्क्रॉलव्यू देखें जो "टैब"

+0

क्या आप कोड में स्क्रॉल करना चाहते हैं? क्या आपने कुछ कोशिश की? – Willeke

+0

हाँ। मैं चाहता हूं कि स्क्रॉल फोकस में आने पर स्क्रॉल स्वचालित रूप से हो और स्क्रॉल व्यू के दृश्य क्षेत्र में न हो। मैंने विफल होने के साथ 'autoscroll:' कोशिश की है। मुझे कोई सुराग नहीं है कि मुझे क्या करना है। आशा है कि आपको मेरी आवश्यकता मिल जाएगी। कृपया टिप्पणी करें। –

+0

'कोशिश करें' [scrollRectToVisible: view.bounds] देखें। – Willeke

उत्तर

3

समाधान ए: 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; 
} 

समाधान बी: ​​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

धन्यवाद @ विलेक। मैंने इसके समान कुछ करने की कोशिश की लेकिन यह काम नहीं किया, एनएसविंडो में यह करने से यह आकर्षण की तरह काम करता है। –

संबंधित मुद्दे