NSLayoutManager с несколькими NSTextContainers приводит к невозможности выбора/редактирования UITextViewsIOS

Программируем под IOS
Ответить
Anonymous
 NSLayoutManager с несколькими NSTextContainers приводит к невозможности выбора/редактирования UITextViews

Сообщение Anonymous »

Я пытаюсь создать многостраничный макет редактирования текста, как в Pages, MS Word,... . В OS X я могу добиться этого, создав один NSLayoutManager с одним NSTextStorage для нескольких NSTextViews. Каждый NSTextView имеет свой собственный NSTextContainer. См. ниже код для OS X. Простой пример с распространением текста между двумя NSTextViews:

Код: Выделить всё

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 в другой, но его нельзя редактировать. Буду крайне благодарен за любой совет. Я погуглил эту проблему и нашел других людей, испытывающих ту же проблему, но не нашел решения.

Подробнее здесь: https://stackoverflow.com/questions/326 ... ot-be-sele
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»