में स्ट्रिंग के साथ एनएसटीक्स्टस्टॉरेज को कैसे प्रारंभ करें another problem को छोटे हिस्सों में तोड़ने के लिए, मैं सभी टेक्स्टकिट घटकों को स्थापित करने की कोशिश कर रहा हूं। हालांकि, मैं NSTextStorage
कैसे शुरू करता हूं इसे बदलने के बाद मुझे दुर्घटना हो रही है।स्विफ्ट
import UIKit
class ViewController3: UIViewController {
@IBOutlet weak var textView: UITextView!
@IBOutlet weak var myTextView: MyTextView!
override func viewDidLoad() {
super.viewDidLoad()
let container = NSTextContainer(size: myTextView.bounds.size)
let layoutManager = NSLayoutManager()
let textStorage = NSTextStorage(string: "This is a test")
layoutManager.addTextContainer(container)
//layoutManager.textStorage = textView.textStorage // This works
layoutManager.textStorage = textStorage // This doesn't work
myTextView.layoutManager = layoutManager
}
}
class MyTextView: UIView {
var layoutManager: NSLayoutManager?
override func drawRect(rect: CGRect) {
let context = UIGraphicsGetCurrentContext();
// Enumerate all the line fragments in the text
layoutManager?.enumerateLineFragmentsForGlyphRange(NSMakeRange(0, layoutManager!.numberOfGlyphs), usingBlock: {
(lineRect: CGRect, usedRect: CGRect, textContainer: NSTextContainer!, glyphRange: NSRange, stop: UnsafeMutablePointer<ObjCBool>) -> Void in
// Draw the line fragment
self.layoutManager?.drawGlyphsForGlyphRange(glyphRange, atPoint: CGPointMake(0, 0))
})
}
}
यह EXC_I386_GPFLT की एक अपवाद कोड के साथ enumerateLineFragmentsForGlyphRange
पर दुर्घटनाओं: परीक्षण प्रयोजनों के लिए मैं निम्नलिखित करने के लिए परियोजना को सरल बनाया है। वह कोड बहुत स्पष्टीकरण नहीं है। लगता है कि मैं NSTextStorage
कैसे शुरू कर रहा हूं, इस बारे में मूल समस्या नीचे आ रही है।
यदि मैं यह
layoutManager.textStorage = textView.textStorage
साथ
let textStorage = NSTextStorage(string: "This is a test")
layoutManager.textStorage = textStorage
की जगह तो यह काम करता है। मैं क्या गलत कर रहा हूं?
टेक्स्ट दें: NSTextStorage = NSTextStorage (स्ट्रिंग: "टेस्ट") – Arvind
@ अरविंद, फिर भी वही त्रुटि ... – Suragch
डॉकमेंट्स को देखने से, मुझे लगता है कि आपको लेआउट मैनेजर को टेक्स्ट स्टोरेज में जोड़ने की कोशिश करनी चाहिए दूसरी तरह के आसपास। –