我試圖定義在我的文本中出現軟換行符的位置,並且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