Я пытаюсь определить, где в моем тексте возникают мягкие разрывы строк, а метод NSLayoutManagerDelegate
layoutManager(_:shouldBreakLineByWordBeforeCharacterAt:)
кажется местом для начала. Моя проблема заключается в том, что ее не называют, хотя мои другие методы. Это происходит с базовой настройкой UITextView
. При каких условиях этот метод называется - я ищу подходящее место?Как решить, где возникают текстовые разрывы с TextKit?
Вот что мой стек TextKit выглядит следующим образом:
class DemoTextView: UITextView, NSLayoutManagerDelegate {
// MARK: - Init
required init() {
let textStorage = NSTextStorage(string: "i will overflow several lines probably just saying")
let layoutManager = NSLayoutManager()
textStorage.addLayoutManager(layoutManager)
let textContainer = NSTextContainer(size: CGSize(width: 100, height: 100))
textContainer.lineBreakMode = .byWordWrapping
textContainer.lineFragmentPadding = 0
layoutManager.addTextContainer(textContainer)
// Super
super.init(frame: .zero, textContainer: textContainer)
self.textContainerInset = .zero
// Configure Text View
layoutManager.delegate = self
self.isScrollEnabled = false
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
// Layout Manager
func layoutManager(_ layoutManager: NSLayoutManager, shouldBreakLineByWordBeforeCharacterAt charIndex: Int) -> Bool {
print(#function)
return false
}
func layoutManager(_ layoutManager: NSLayoutManager, shouldBreakLineByHyphenatingBeforeCharacterAt charIndex: Int) -> Bool {
print(#function)
return false
}
}
@matt Обновлено. Стек не обязательно полностью настраивается, но - я только что установил делегат/ – mattsven
@matt. Я пытался это сделать на Playground, используя живой просмотр. Может, так оно и есть? – mattsven
Я умываю руки от всего этого. Игровые площадки - это работа дьявола. – matt