Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITextField中插入符号/光标的奇怪行为_Ios_Swift_Uitextfield - Fatal编程技术网

Ios UITextField中插入符号/光标的奇怪行为

Ios UITextField中插入符号/光标的奇怪行为,ios,swift,uitextfield,Ios,Swift,Uitextfield,(Xcode10.1,Swift,iOS 11和iOS 12) 问题:如何增加UITextField中插入符号/光标的高度 到目前为止我所尝试的: 我这样做了,问题解决了 class BPTextField: UITextField { override func caretRect(for position: UITextPosition) -> CGRect { //CGRect rect = [super caretRectForPosition:positi

(Xcode10.1,Swift,iOS 11和iOS 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;
    }
}
但是,当我改变键盘语言(从英语印度语到日语假名)并键入单个字符时,插入符号/光标在文本字段中向上移动

请帮帮我

我已经浏览了这些链接,

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

这是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)
//BPTextField

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

您可以按如下方式计算原点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
}

我会尽量让你知道的。谢谢你的即时支持。是的,我试过了,但没有运气。。。谢谢你的努力。我已经为你编辑了我的问题。谢谢你的回复。