gpt4 book ai didi

ios - UITextField 中 Caret/Cursor 的奇怪行为

转载 作者:可可西里 更新时间:2023-11-01 01:55:31 25 4
gpt4 key购买 nike

(Xcode10.1,Swift,iOS 11&12)
问题:如何增加 UITextField 中插入符/光标的高度

到目前为止我尝试了什么:
我这样做了,问题解决了。

class BPTextField: UITextField {
override func caretRect(for position: UITextPosition) -> CGRect {
//CGRect rect = [super caretRectForPosition:position];
var rect = super.caretRect(for: position)
let h = self.frame.height - 5
let y_ = (self.frame.height - h)/2
rect.origin.y = y_
rect.size.height = h;
return rect;
}
}

但是,当我更改键盘语言(从英语-印度语到日语-假名语)并键入单个字符时,插入符号/光标在 TextField 中移到上侧。

请帮帮我

我浏览了这些链接,
How to make the height of the cursor same with the height of text in UITextField?
UITextView lineSpacing make cursor height not same

编辑我正在使用 YYText 库,我正在将此 BPTextField 作为 NSAttributedStringAttachment

插入到 YYLabel

这里是 NSAttributedString,

let main = NSMutableAttributedString(string: text_)
main.yy_color = .darkGray
main.yy_font = questionFont
main.yy_lineSpacing = 5.0
main.yy_lineBreakMode = .byWordWrapping

//附件

let attachment = NSMutableAttributedString.yy_attachmentString(withContent: self.tf, contentMode: UIView.ContentMode.center, attachmentSize: self.tf.frame.size, alignTo: questionFont, alignment: YYTextVerticalAlignment.bottom)
attachment.yy_baselineOffset = -5.0
root.append(attachment)

//BP文本字段

self.tf = BPTextField(frame: CGRect(origin: CGPoint.init(x: 0, y: 13), size: CGSize(width: tfWidth.width + 7.5, height: tfWidth.height + 13.0)))
self.tf.borderStyle = UITextField.BorderStyle.none
self.tf.tag = 0
self.tf.font = questionFont
self.tf.autocorrectionType = UITextAutocorrectionType.no
self.tf.textColor = .darkGray
self.tf.setRoundedCorners(corners: UIRectCorner.allCorners, withRadius: 4.0)
// self.tf.setLeftPaddingPoints(5.0)
// self.tf.setRightPaddingPoints(0.0)
self.tf.backgroundColor = #colorLiteral(red: 0.9058823529, green: 0.9529411765, blue: 1, alpha: 1)
self.tf.tintColor = #colorLiteral(red: 0.2196078431, green: 0.6156862745, blue: 1, alpha: 1)
self.tf.returnKeyType = .done
self.tf.delegate = self

最佳答案

你可以如下计算origin y

override func caretRect(for position: UITextPosition) -> CGRect {
var rect = super.caretRect(for: position)
let size = CGSize(width: rect.size.width, height: self.frame.height - 5)
// Calculating center y
let y = rect.origin.y - (size.height - rect.size.height)/2
rect = CGRect(origin: CGPoint(x: rect.origin.x, y: y), size: size)
return rect
}

关于ios - UITextField 中 Caret/Cursor 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53665841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com