पृष्ठभूमि
तो, iOS 6 एक UITextView एक attributedString, जो सिंटेक्स हाइलाइटिंग के लिए उपयोगी हो सकता है ले जा सकते हैं।UITextView attributedText और वाक्य रचना हाइलाइटिंग
मैं -textView:shouldChangeTextInRange:replacementText:
में कुछ रेगेक्स पैटर्न कर रहा हूं और कई बार मुझे पहले से टाइप किए गए शब्द का रंग बदलने की जरूरत है। मुझे जिम्मेदार पाठ को रीसेट करने से कोई अन्य विकल्प नहीं दिखता है, जिसमें समय लगता है।
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
//A context will allow us to not call -attributedText on the textView, which is slow.
//Keep context up to date
[self.context replaceCharactersInRange:range withAttributedString:[[NSAttributedString alloc] initWithString:text attributes:self.textView.typingAttributes]];
// […]
self.textView.scrollEnabled = FALSE;
[self.context setAttributes:self.defaultStyle range:NSMakeRange(0, self.context.length)];
[self refresh]; //Runs regex-patterns in the context
textView.attributedText = self.context;
self.textView.selectedRange = NSMakeRange(range.location + text.length, 0);
self.textView.scrollEnabled = TRUE;
return FALSE;
}
इस सिम्युलेटर पर okayish चलाता है, लेकिन एक iPad 3 पर प्रत्येक -setAttributedText
मिलीसेकेंड के कुछ ही सैकड़ों लेता है।
मैंने एट्रिब्यूटेड टेक्स्ट को म्यूट करने में सक्षम होने के अनुरोध के साथ ऐप्पल को एक बग दायर किया। इसे डुप्लिकेट के रूप में चिह्नित किया गया है, इसलिए मैं नहीं देख सकता कि वे इसके बारे में क्या कह रहे हैं।
सवाल
अधिक विशिष्ट प्रश्न: मैं कैसे कुछ पर्वतमाला के रंग एक UITextView में, एक बड़े बहुरंगी पाठ के साथ, काफी अच्छा प्रदर्शन के साथ हर shouldReplaceText...
में यह करने के लिए बदल सकते हैं?
अधिक व्यापक प्रश्न: आईओएस 6 में यूआईटीएक्स्टव्यू के साथ सिंटैक्स हाइलाइटिंग कैसे करते हैं?
मैं भी अपने वेब वक्ता अनुप्रयोग में बोली जा रही पाठ हाइलाइट करने के लिए कोशिश कर रहा हूँ:
यहाँ एक आसान वर्ग है। मैंने सोचा कि मैं iOS6 के साथ आसानी से ऐसा करने में सक्षम हो जाएगा, लेकिन मैं एपीआई गतिशील निश्चित सीमा में स्ट्रिंग रंग बदलने के लिए नहीं मिल सका .. पूर्ण जिम्मेदार ठहराया पाठ हर बार बहुत ज्यादा समय लगता है की स्थापना। –
मैंने ऐप्पल को एक बग रिपोर्ट भी दायर की। हमें इस विधि की तरह कुछ चाहिए। "TextView_.attributedText addAttribute: मूल्य: फ़ॉन्ट रेंज:" –
हाँ, पर मुझे यकीन है कि हम attributedText की एक अस्थायी संस्करण कभी नहीं देखेंगे, क्योंकि TextView पता करने के लिए जब भी स्ट्रिंग बदल गया है की जरूरत है। withText:: मैं या तो एक होशियार सेटर, या की UITextInput के '-replaceRange एक जिम्मेदार ठहराया संस्करण के लिए आशा' –