Я пытаюсь создать многостраничный текстовый редактор, как в Pages, MS Word, .... В OS X я могу добиться этого, создав один NSLayoutManager с одним NSTextStorage для нескольких NSTextViews. Каждый NSTextView имеет свой собственный NSTextContainer. Ниже приведен код для OS X. Простой пример с расширением текста между двумя NSTextViews:NSLayoutManager с несколькими NSTextContainers заставляет UITextViews не выбираться/редактироваться
import Cocoa
class ViewController: NSViewController {
let layoutManager = NSLayoutManager()
let textStorage = NSTextStorage(attributedString: NSAttributedString(string: "This is a test"))
let textContainer1 = NSTextContainer()
let textContainer2 = NSTextContainer()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
textStorage.addLayoutManager(layoutManager)
textContainer1.widthTracksTextView = true
textContainer1.heightTracksTextView = true
textContainer2.widthTracksTextView = true
textContainer2.heightTracksTextView = true
let textView1 = NSTextView(frame: CGRectMake(0, 100, 100, 100), textContainer: textContainer1)
textView1.backgroundColor = NSColor.greenColor()
self.view.addSubview(textView1)
layoutManager.addTextContainer(textContainer1)
let textView2 = NSTextView(frame: CGRectMake(200, 100, 100, 100), textContainer: textContainer2)
textView2.backgroundColor = NSColor.greenColor()
self.view.addSubview(textView2)
layoutManager.addTextContainer(textContainer2)
}
}
Это работает.
Однако, когда я пытаюсь сделать то же самое на iOS с UITextView, UITextViews становятся недоступными или редактируемыми. См. Мой код для iOS:
import UIKit
class ViewController: UIViewController, UITextViewDelegate {
let layoutManager = NSLayoutManager()
let textStorage = NSTextStorage(attributedString: NSAttributedString(string: "This is a test. This text should spread over two UITextViews. Bla bla bla bla bla bla bla bla bla bla bla bla bla"))
let textContainer1 = NSTextContainer()
let textContainer2 = NSTextContainer()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
textStorage.addLayoutManager(layoutManager)
textContainer1.heightTracksTextView = true
textContainer1.widthTracksTextView = true
textContainer2.heightTracksTextView = true
textContainer2.widthTracksTextView = true
let textView1 = UITextView(frame: CGRectMake(0, 100, 100, 100), textContainer: textContainer1)
textView1.scrollEnabled = false
textView1.delegate = self
textView1.editable = true
textView1.selectable = true
textView1.backgroundColor = UIColor.greenColor()
self.view.addSubview(textView1)
layoutManager.addTextContainer(textContainer1)
let textView2 = UITextView(frame: CGRectMake(200, 100, 100, 100), textContainer: textContainer2)
textView2.scrollEnabled = false
textView2.delegate = self
textView2.editable = true
textView2.selectable = true
textView2.backgroundColor = UIColor.greenColor()
self.view.addSubview(textView2)
layoutManager.addTextContainer(textContainer2)
}
}
Текст перетекает из одного UITextView в другой, но не редактируется. Я был бы очень благодарен за любые советы. Я искал эту проблему и обнаружил, что другие люди испытывают ту же проблему, но не нашли решений.
Вы нашли решение на это? –
Я хотел бы знать ответ для этого. –