Ios 光标在UITextView中未对齐?

Ios 光标在UITextView中未对齐?,ios,swift,textview,uitextview,cursor-position,Ios,Swift,Textview,Uitextview,Cursor Position,我有一个文本视图。单击时,蓝色光标将显示在文本视图中。但是,此蓝色光标太高。它没有居中。因此,蓝色光标的上部被切断。这就是它看起来的样子: 在文本视图中键入任何文本后,蓝色光标就会向下移动。因此,只要输入任何文本,蓝色光标就会在屏幕上居中。如您所见,此处蓝色光标的定位与之前蓝色光标的定位不同。这就是它看起来的样子: 如何使蓝色光标在两种情况下的位置相同 这是我的代码: class ViewController: UIViewController, UITableViewDataSource, U

我有一个文本视图。单击时,蓝色光标将显示在文本视图中。但是,此蓝色光标太高。它没有居中。因此,蓝色光标的上部被切断。这就是它看起来的样子:

在文本视图中键入任何文本后,蓝色光标就会向下移动。因此,只要输入任何文本,蓝色光标就会在屏幕上居中。如您所见,此处蓝色光标的定位与之前蓝色光标的定位不同。这就是它看起来的样子:

如何使蓝色光标在两种情况下的位置相同

这是我的代码:

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextViewDelegate {

    @IBOutlet weak var userMessageTextView: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.userMessageTextView.delegate = self

        //Used to make the border of the TextView look the same as the border of a TextField
        userMessageTextView.layer.borderColor = UIColor(red: 0.9, green: 0.9, blue: 0.9, alpha: 1.0).cgColor
        userMessageTextView.layer.borderWidth = 1.0
        userMessageTextView.layer.cornerRadius = 5

        //Used to Make the Cursor appear somewhat centered in the TextView; Without this, the bottom of the cursor is lined up with the bottom edge of the TextView, so the cursor is not centered within the textView
        userMessageTextView.contentOffset.y = 4.0
    }
}

我猜您给文本视图指定了一个固定的高度,而文本字体没有设置为与高度匹配


无论如何,UITextField更适合您的用例。我建议你改用它

尝试检查UITextView的TextContainetSet


我无法使用UITextField,因为UITextField不允许有多行。只有UITextView可以有多行。@Everett:您是否在任何UITextView委托方法中更改字体?我不会在任何地方更改字体。在Main.storyboard中将字体设置为System 17.0。我不会在任何地方改变它。此外,文本视图的高度不会在任何地方更改。Main.storyboard中的高度设置为30。@Everett:如果高度设置为30,您认为它是多行的吗?我希望稍后添加多行功能。稍后,我将以编程方式更改高度,如果有多行文本,则使用ViewController增加高度。现在,我只是想让光标在用户按下时显示在文本视图的中心。用户将使用键盘在textView中键入。在ViewDidLoad、TextViewDidBeginEdit和TextViewDidChange中,myTextView.TextContainerSet的值为UIEdgeInSettop:8.0、left:0.0、bottom:8.0、right:0.0。在XIB或故事板文件中是否有任何约束?是否更改了TextView字体默认值?我在Main.storyboard中有约束,但是这些约束仅适用于tableView中单元格内的标签。我对TextView没有任何限制。我更改了TextView字体的默认值。从对象库中将其拖入后,其初始值为System 14.0。使用Main.storyboard中的实用程序检查器,我将该值更改为System 17.0。