我有一个自定义的、可编辑的 UITextView,我修改了段落间距,如下所示:
func layoutManager(_ layoutManager: NSLayoutManager, paragraphSpacingBeforeGlyphAt glyphIndex: Int, withProposedLineFragmentRect rect: CGRect) -> CGFloat {
return 10
}
func layoutManager(_ layoutManager: NSLayoutManager, paragraphSpacingAfterGlyphAt glyphIndex: Int, withProposedLineFragmentRect rect: CGRect) -> CGFloat {
return 10
}
这导致光标非常大。我试图通过覆盖来解决这个问题caretRect
:
override func caretRect(for position: UITextPosition) -> CGRect {
let defaulCaretRect = super.caretRect(for: position)
return CGRect(x: defaulCaretRect.origin.x, y: defaulCaretRect.origin.y, width: defaulCaretRect.width, height: 22)
}
它在某些情况下完美运行,但在其他情况下,这origin.y
是错误的:
如果我对. 进行调整origin.y
,它会在正确的情况下破坏它。我不知道如何识别是否origin.y
需要修复。我错过了什么吗?
我在这里看到了一些使用以下内容的旧答案:
rect.size.height = font.pointSize - font.descender
但是由于某种原因,这没有效果。有任何想法吗?
最后,较大的段落间距也会导致选择句柄过大:
还有什么办法解决吗?