如何使UITextField中光标的高度与文本高度相同?

7
我有一个UITextField,光标太长了(下图中"123123"的光标)。如何使光标的高度与文本的高度相同?

你的问题可能与这个相同:https://dev59.com/HmIj5IYBdhLWcg3wfVJ8 - menq
4个回答

17

我无意中发现了这个问题,尽管它有点过时,但我仍然觉得有必要回答它,因为被接受的答案实际上是不正确的。

你确实可以改变光标的高度(或宽度)。只需对UITextField进行子类化并覆盖此方法:

- (CGRect)caretRectForPosition:(UITextPosition *)position {
    CGRect rect = [super caretRectForPosition:position];
    rect.size.height = 42;
    return rect;
}

嗨,我尝试了你的答案,它有效,所以给你加一分,但是当我将键盘从英语(印度)更改为日语(假名)时,插入单个字符时光标会向上移动。Xcode 10.1&Swift - Vatsal Shukla
谢谢,这是一个很棒的答案!应该选为正确的答案。它是一种更加灵活可靠的解决方案。在我的情况下,我还需要根据不同的条件更改光标的位置。我可以通过这种方法实现。 - Artemis Shlesberg

0

我们无法更改光标的高度,但我们可以使用一些技巧,选择您的文本字段并将其边框样式更改为UITextBorderStyleNone

您将获得以下输出

enter image description here

然后增加您的文本字段字体大小,任何您想要的大小都可以,然后您将获得以下输出:

enter image description here


非常感谢!光标的高度似乎与textField的高度相同。因此,我在textfield的高度上设置了一个约束并增加了字体大小。 - jybsuper
@Anbu.Karthik,我在另一个问题上遇到了一些问题,如果你有空的话,请帮帮我。 - Jigar
@john - 当然,没问题。 - Anbu.Karthik
@Anbu.Karthik,请查看此问题:https://dev59.com/P53ha4cB1Zd3GeqPaNJa - Jigar

0

在2021年,我们有属性

TextFormField(
cursorHeight: 13,
cursorColor: Colors.black)

这不是UIKit / iOS。 - Leo Dabus

0
假设您的UITextField名称为uiTextField。要设置字体大小,请添加以下代码:
_uITextField.font = UIFont.systemFont(ofSize: 10)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接