2010-03-20 13 views
13

मैं बहु-पंक्ति इनपुट की अनुमति देने के लिए एक NSTextView का उपयोग कर रहा हूं। हालांकि, मेरे ऐप की प्रकृति के कारण, जब वे टैब दबाते हैं तो उपयोगकर्ता अगले इनपुट तत्व में अधिक आरामदायक हो जाएंगे।मैं टैब कुंजी को एनएसटीक्स्ट व्यू से कैसे फोकस कर सकता हूं?

एंटर कुंजी के न्यूलाइन व्यवहार को रखते हुए, मैं TAB को NSTextView से कैसे बाहर निकाल सकता हूं?

उत्तर

4

आपको इसे सबक्लास में लागू करने की आवश्यकता होगी।

मैंने Translate Text के लिए ऐसा सबक्लास लिखा था। its BSD license के तहत इसका उपयोग करने के लिए आपका स्वागत है। यहां the header और the implementation file है।

... एंटर कुंजी के न्यूलाइन व्यवहार को रखते हुए?

मेरा मुख्य उद्देश्य लक्ष्य पर कार्रवाई करने के लिए था जब उपयोगकर्ता एंटर दबाता है, और मैंने इसे दृश्य से फोकस भी छोड़ दिया है। हालांकि, दोनों कोड में स्पष्ट बयान हैं; आप बस उस कोड को टिप्पणी या हटा सकते हैं।

+1

दर्ज के लिए कुंजी कोड kVK_ANSI_KeypadEnter के रूप में हेडर में परिभाषित किया गया है। इसी तरह, टैब केवीके_Tab है। –

17

आप अपने पाठ को देखने के प्रतिनिधि में -textView:doCommandBySelector: को लागू कर सकते हैं:

- (BOOL)textView:(NSTextView *)aTextView doCommandBySelector:(SEL)aSelector { 
    if (aSelector == @selector(insertTab:)) { 
     [[aTextView window] selectNextKeyView:nil]; 
     return YES; 
    } 

    return NO; 
} 

देखें http://developer.apple.com/documentation/Cocoa/Reference/NSTextViewDelegate_Protocol

+5

बहुत अच्छा दृष्टिकोण। आप 'insertBacktab: 'के लिए भी जांच सकते हैं और समान रूप से' selectPreviousKeyView: 'को कॉल कर सकते हैं। –

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