Objective c 如何在UITextView中垂直居中光标

Objective c 如何在UITextView中垂直居中光标,objective-c,textview,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.s

我尝试在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中


有办法解决吗?

使用iOS 7.0及更高版本的
UITextView
textContainerInset
属性

inputTextView.textContainerInset = UIEdgeInsetsMake(-2,0,0,0); // Move cursor up 2

玩转这些价值观,直到它符合您的需要。

上述解决方案是完美的,但对于那些使用swift 3的人,我已将其翻译为以下广告,其效果完美

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

覆盖用户的UITextField

我知道这已经得到了回答,但答案对我来说并不适用。 通过覆盖此方法,我成功实现了插入符号定位的预期差异:

-(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);
}

看看你的图片,我会说你应该使用UITextField而不是UITextView…但我必须只使用UITextView。为什么使用UITextView,为什么不使用UITextField?因为我用来显示图标和文字。我如何在TEXTFIELD中使用它?它具有类似的特性?UITextField不具有相同的属性。我相信您必须将UITextField子类化才能更改行为,但我不确定。请检查下面的答案