2016-03-29 9 views
7

मैं एक NSTextView में उपयोगकर्ता इनपुट पार्स करने के लिए इतना है कि एक लाइन के साथ शुरुआत करना चाहेंगे। बुलेट सूची को सक्षम करने के लिए मुझे NSTextView.textStorage में क्या करना है ताकि जब आप प्रत्येक बुलेट लाइन के बाद एंटर दबाते हैं तो अगली बुलेट स्वचालित रूप से प्रकट होती है?NSTextList में NSTextList के साथ बुलेट सूची उदाहरण देखें? "-" स्वचालित रूप से एक बुलेटेड सूची शुरू होगा

मैं कुछ उदाहरण मिल गया है, लेकिन वे केवल हाथ से बनाया गोलियों डालें, तो मैं सोच रहा था let textList = NSTextList(markerFormat: "{box}", options: 0) निर्दिष्ट करने की बात क्या है अगर तुम तो मैन्युअल रूप से बॉक्स प्रतीक अपने आप को सम्मिलित करने के लिए है?

वर्तमान में मैं इसे एक कस्टम एनएसटीक्स्ट व्यू में एक ओवर्रिडेन shouldChangeTextInRange(affectedCharRange: NSRange, replacementString: String?) के साथ कार्यान्वित करने की कोशिश कर रहा हूं, इसलिए एक सरल उदाहरण जो स्वत: बुलेट सूची शुरू करने के सबसे सरल इनपुट केस को हल करेगा, को अत्यधिक सम्मानित किया जाएगा।

अपडेट: "-" में पहली पात्रों के रूप में

override func shouldChangeTextInRange(affectedCharRange: NSRange, replacementString: String?) -> Bool { 
    super.shouldChangeTextInRange(affectedCharRange, replacementString: replacementString) 

    if string == "-" && replacementString == " " { 
     let textList = NSTextList(markerFormat: "{disc}", options: 0) 
     let textListParagraphStyle = NSMutableParagraphStyle() 
     textListParagraphStyle.textLists = [textList] 
     let attributes = [NSParagraphStyleAttributeName: textListParagraphStyle] 
     string = "\t\(textList.markerForItemNumber(0))\t" 
     textStorage?.addAttributes(attributes, range: NSMakeRange(0, textStorage!.string.length)) 
     return false 
    } 
    else if affectedCharRange.location > 0 && replacementString == "\n\n" { 
     textStorage?.insertAttributedString(NSAttributedString(string: "\t"), atIndex: affectedCharRange.location) 
     return true 
    } 

    return true 
} 

मैं सिर्फ उपयोगकर्ता टाइपिंग का सरलतम मामले को सुलझाने की कोशिश कर रहा हूँ:

यहाँ कोड मैं वर्तमान में उपयोग कर रहा हूँ है NSTextView। यह उपरोक्त कोड के साथ होता है: Output in custom NSTextView

शुरुआत में बड़ा फ़ॉन्ट टाइपिंग एट्रिब्यूट्स से आता है। जैसा कि आप देख सकते हैं, यह स्वचालित रूप से ओवरराइड हो जाता है।

else if खंड से झूठी वापसी और \ n सीधे डालने से NSTextView स्वचालित रूप से नई गोलियां जोड़ने से रोक देगा। पहली बार मैं वहां से true लौटाता हूं, इस विधि को कॉल किए बिना नए बुलेट स्वचालित रूप से जोड़े जाते हैं ??? यूनिकोड वर्ण का उपयोग कर गोलियों जोड़ने के लिए

उत्तर

-1

प्रयास द्वारा की जगह "- " with \u{2022}

textView.text = " \u{2022} This is a list item!

+1

मैं केवल के स्थान पर "•" सम्मिलित करने का प्रयास नहीं कर रहा हूँ - निश्चित रूप से एक की शुरुआत की तरह दिखाई देगा जो, "" सूची, लेकिन यह टेक्स्टव्यू में एक NSTextList नहीं बनाता है और इस प्रकार इसमें सभी संपादन कार्यक्षमता की कमी है जो एक उचित रूप से मान्यता प्राप्त सूची-वस्तु मुक्त प्रदान करती है। यदि आप पहले आइटम के अंत में एंटर दबाते हैं, तो बुलेट से शुरू होने वाली अगली वस्तु टेक्स्ट व्यू द्वारा नहीं जोड़ा जाएगा। एक सही उत्तर को NSTextView में NSTextList को सही ढंग से डालने का तरीका बताने की आवश्यकता होगी। – Melodius

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