我尝试将文本光标垂直居中在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中。
有办法解决吗?
答案 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);
}