खोज…


पाठ बदलें

तीव्र

textView.text = "Hello, world!"

उद्देश्य सी:

textView.text = @"Hello, world!";

जिम्मेदार पाठ सेट करें

// Modify some of the attributes of the attributed string.
let attributedText = NSMutableAttributedString(attributedString: textView.attributedText!)

// Use NSString so the result of rangeOfString is an NSRange.
let text = textView.text! as NSString

// Find the range of each element to modify.
let tintedRange = text.range(of: NSLocalizedString("tinted", comment: ""))
let highlightedRange = text.range(of: NSLocalizedString("highlighted", comment: ""))

// Add tint.
attributedText.addAttribute(NSForegroundColorAttributeName, value: UIColor.blue, range: tintedRange)

// Add highlight.
attributedText.addAttribute(NSBackgroundColorAttributeName, value: UIColor.yellow, range: highlightedRange)

textView.attributedText = attributedText

पाठ संरेखण बदलें

तीव्र

textView.textAlignment = .left

उद्देश्य सी

textView.textAlignment = NSTextAlignmentLeft;

UITextViewDelegate विधियाँ

संपादन सूचनाओं पर प्रतिक्रिया

  • textViewShouldBeginEditing(_:)
  • textViewDidBeginEditing(_:)
  • textViewShouldEndEditing(_:)
  • textViewDidEndEditing(_:)

पाठ परिवर्तन पर प्रतिक्रिया

  • textView(_:shouldChangeTextIn:replacementText:)
  • textViewDidChange(_:)

URL पर प्रतिक्रिया दे रहा है

  • textView(_: UITextView, shouldInteractWithURL: NSURL, inRange: NSRange) -> Bool

फ़ॉन्ट बदलें

तीव्र

//System Font
textView.font = UIFont.systemFont(ofSize: 12)

//Font of your choosing
textView.font = UIFont(name: "Font Name", size: 12)

उद्देश्य सी

//System Font
textView.font = [UIFont systemFontOfSize:12];

//Font of your choosing
textView.font = [UIFont fontWithName:@"Font Name" size:12];

टेक्स्ट का रंग बदलें

तीव्र

textView.textColor = UIColor.red

उद्देश्य सी

textView.textColor = [UIColor redColor];

HTML टेक्स्ट के साथ UITextView

NSString *htmlString = @"<p> This is an <b>HTML</b> text</p>";
NSAttributedString *attributedString = [[NSMutableAttributedString alloc]
                                                        initWithData: [htmlString dataUsingEncoding:NSUnicodeStringEncoding]
                                                        options: @{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }
                                                        documentAttributes: nil
                                                        error: nil
                                                        ];
                _yourTextView.attributedText = attributedString;
                // If you want to modify the font
                field.font = [UIFont fontWithName:@"Raleway-Regular" size:15];

ऑटो पता लिंक, पते, दिनांक, और अधिक

UITextView ने विभिन्न डेटा का पता लगाने के लिए ऑटो के समर्थन में बनाया है। वर्तमान में स्वतः-पहचाने जाने योग्य डेटा में शामिल हैं:

enum {
   UIDataDetectorTypePhoneNumber   = 1 << 0,
   UIDataDetectorTypeLink          = 1 << 1,
   UIDataDetectorTypeAddress       = 1 << 2,
   UIDataDetectorTypeCalendarEvent = 1 << 3,
   UIDataDetectorTypeNone          = 0,
   UIDataDetectorTypeAll           = NSUIntegerMax
};

ऑटो-डिटेक्शन को सक्षम करना

// you may add as many as you like by using the `|` operator between options
textView.dataDetectorTypes = (UIDataDetectorTypeLink | UIDataDetectorTypePhoneNumber);

सक्षम होने पर, पाठ UITextView पर हाइपरलिंक के रूप में दिखाई देगा

क्लिक करने योग्य डेटा

लिंक को क्लिक करने की अनुमति देने के लिए (जो डेटा प्रकार के आधार पर अलग-अलग क्रियाओं में परिणाम देगा) आपको यह सुनिश्चित करना होगा कि UITextView चयन करने योग्य है, लेकिन संपादन योग्य नहीं है और उपयोगकर्ता सहभागिता सक्षम है

textView.editable = NO;
textView.selectable = YES;
textView.userInteractionEnabled = YES; // YES by default

यह देखने के लिए जांचें कि रिक्त या शून्य है

तीव्र

if let text = self.textView.text where !text.isEmpty {
    // Do stuff for text
} else {
    // Do stuff for nil text or empty string
}

उद्देश्य सी

if (self.textView.text.length > 0){
    // Do stuff for text
}   else {
    // Do stuff for nil text or empty string
}

कर्सर पोस्टिंग प्राप्त करना और स्थापित करना

उपयोगी जानकारी

पाठ फ़ील्ड पाठ की बहुत शुरुआत:

let startPosition: UITextPosition = textView.beginningOfDocument

पाठ फ़ील्ड टेक्स्ट का बहुत अंत:

let endPosition: UITextPosition = textView.endOfDocument

वर्तमान में चयनित रेंज:

let selectedRange: UITextRange? = textView.selectedTextRange

कर्सर स्थिति प्राप्त करें

if let selectedRange = textView.selectedTextRange {
    
    let cursorPosition = textView.offsetFromPosition(textView.beginningOfDocument, toPosition: selectedRange.start)
    
    print("\(cursorPosition)")
}

कर्सर स्थिति सेट करें

स्थिति सेट करने के लिए, ये सभी विधियां वास्तव में समान प्रारंभ और अंत मानों के साथ एक सीमा निर्धारित कर रही हैं।

शुरुआत तक

let newPosition = textView.beginningOfDocument
textView.selectedTextRange = textView.textRangeFromPosition(newPosition, toPosition: newPosition)

अंत की ओर

let newPosition = textView.endOfDocument
textView.selectedTextRange = textView.textRangeFromPosition(newPosition, toPosition: newPosition)

वर्तमान कर्सर स्थिति के बाईं ओर एक स्थिति के लिए

// only if there is a currently selected range
if let selectedRange = textView.selectedTextRange {
    
    // and only if the new position is valid
    if let newPosition = textView.positionFromPosition(selectedRange.start, inDirection: UITextLayoutDirection.Left, offset: 1) {
        
        // set the new position
        textView.selectedTextRange = textView.textRangeFromPosition(newPosition, toPosition: newPosition)
    }
}

एक अनियंत्रित स्थिति में

शुरुआत में शुरू करें और 5 वर्णों को दाईं ओर ले जाएं।

let arbitraryValue: Int = 5
if let newPosition = textView.positionFromPosition(textView.beginningOfDocument, inDirection: UITextLayoutDirection.Right, offset: arbitraryValue) {
    
    textView.selectedTextRange = textView.textRangeFromPosition(newPosition, toPosition: newPosition)
}

सम्बंधित

सभी पाठ का चयन करें

textView.selectedTextRange = textView.textRangeFromPosition(textView.beginningOfDocument, toPosition: textView.endOfDocument)

पाठ की एक श्रृंखला का चयन करें

// Range: 3 to 7
let startPosition = textView.positionFromPosition(textView.beginningOfDocument, inDirection: UITextLayoutDirection.Right, offset: 3)
let endPosition = textView.positionFromPosition(textView.beginningOfDocument, inDirection: UITextLayoutDirection.Right, offset: 7)

if startPosition != nil && endPosition != nil {
    textView.selectedTextRange = textView.textRangeFromPosition(startPosition!, toPosition: endPosition!)
}

वर्तमान कर्सर स्थिति पर टेक्स्ट डालें

textView.insertText("Hello")

टिप्पणियाँ

  • यह उदाहरण मूल रूप से इस स्टैक ओवरफ्लो उत्तर के अनुकूलन से आता है।

  • यह उत्तर टेक्स्ट फ़ील्ड का उपयोग करता है, लेकिन समान अवधारणा UITextView लागू होती है।

  • टेक्स्ट फ़ील्ड पर फ़ोकस देने और कीबोर्ड को प्रदर्शित करने के लिए textView.becomeFirstResponder() का उपयोग करें।

  • कुछ सीमा पर पाठ कैसे प्राप्त करें, इसके लिए यह उत्तर देखें।

सम्बंधित

एक ठीक मापा पाठ के लिए अतिरिक्त पैडिंग को निकालें।

UITextView में डिफ़ॉल्ट रूप से अतिरिक्त पैडिंग हैं। कभी-कभी यह विशेष रूप से कष्टप्रद होता है यदि आप बिना उदाहरण के कुछ पाठ को मापना चाहते हैं और उन्हें किसी क्षेत्र में ठीक-ठीक स्थान पर रखना चाहते हैं।

ऐसा पैडिंग को हटाने के लिए करें।

messageTextView.textContainerInset = UIEdgeInsetsZero
messageTextView.textContainer.lineFragmentPadding = 0

अब आप NSAttributedString.boundingRectWithSize(...) का उपयोग करके टेक्स्ट साइज़ को माप सकते हैं, और इसे टेक्स्ट में फिट करने के लिए एक UITextView आकार बदल सकते हैं।

let budget = getSomeCGSizeBudget()
let text = getSomeAttributedString()
let textSize = text.boundingRectWithSize(budget, options: [.UsesLineFragmentOrigin, .UsesFontLeading], context: nil).size
messageTextView.frame.size = textSize // Just fits.


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow