如何将光标垂直居中在UITextView中

时间:2014-12-08 11:30:34

标签: objective-c textview

我尝试将文本光标垂直居中在UITextView中。

// creating the inputText
[inputTextView removeFromSuperview];
inputTextView = [[UITextView alloc]initWithFrame:CGRectMake(CGRectGetMaxX(searchIconsButton.frame) + 3 , 0, buttomView.frame.size.width * 0.78 , buttomView.frame.size.height *0.80)];
inputTextView.layer.borderColor = [UIColor lightGrayColor].CGColor;
inputTextView.layer.borderWidth = 0.6;
inputTextView.center = CGPointMake(inputTextView.center.x, buttomView.frame.size.height / 2);
inputTextView.autocorrectionType = UITextAutocorrectionTypeNo;
[inputTextView.layer setCornerRadius:6];
[inputTextView setTintColor:[UIColor blackColor]]; // set the cursor color to black
inputTextView.textAlignment = UIControlContentVerticalAlignmentCenter;

我在最后一行尝试执行UIControlContentVerticalAlignmentCenter但它仍然无效。

您可以看到光标隐藏在Textview中。

有办法解决吗?

3 个答案:

答案 0 :(得分:5)

使用textContainerInset的{​​{1}}属性,可用的iOS 7.0及更高版本。

UITextView

使用这些值,直到它符合您的需求。

答案 1 :(得分:0)

上面的解决方案是完美的,但对于那些使用swift 3的人,我已经翻译成以下广告,它的工作非常完美。

  override func editingRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.insetBy(dx: 0, dy: 2);
    }

覆盖UITextField ofcouse

答案 2 :(得分:0)

我知道已经回答了,但是答案对我不起作用。 通过覆盖此方法,我设法在插入符号位置上实现了所需的差异:

-(CGRect) caretRectForPosition:(UITextPosition *)position
{
    CGRect nativeRect = [super caretRectForPosition:position];
    NSLog(@"nativeRect x:%f y:%f w:%f h:%f ", nativeRect.origin.x, nativeRect.origin.y, nativeRect.size.width, nativeRect.size.height);

    // Here you can do something with the desired positioning and size (for examaple, I incremented y):
    return CGRectMake(nativeRect.origin.x, nativeRect.origin.y + 2, nativeRect.size.width, nativeRect.size.height);
}