iOS 7 UITextView垂直对齐

如何可能,我的可编辑的UITextView(放置在一个简单的UIViewController内部的UISplitView中作为UITextView的委托)不显示文本从开始,但之后像6-7行?

我没有设置任何特定的自动布局或类似的东西,试图删除文本不帮助(所以没有隐藏的字符或东西)。

我在iPad上使用iOS 7,在故事板看起来不错…
问题是在iOS模拟器和真实设备上是一样的。我疯了:P

这里有一些代码。这是ViewController的viewDidLoad()

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.itemTextField.delegate = self;
    self.itemTextField.text = NSLocalizedString(@"NEWITEMPLACEHOLDER", nil);
    self.itemTextField.textColor = [UIColor lightGrayColor]; //optional
}

这里是UITextView的重写函数我使用一些代码我发现在StackOverflow模拟视图的占位符(同样的东西在故事板的iPhone版本工作正常)…

// UITextView placeholder
- (void)textViewDidBeginEditing:(UITextView *)textView
{
    if ([textView.text isEqualToString:NSLocalizedString(@"NEWITEMPLACEHOLDER", nil)]) {
        textView.text = @"";
        textView.textColor = [UIColor blackColor]; //optional
    }
    [textView becomeFirstResponder];
}

- (void)textViewDidEndEditing:(UITextView *)textView
{
    if ([textView.text isEqualToString:@""]) {
        textView.text = NSLocalizedString(@"NEWITEMPLACEHOLDER", nil);
        textView.textColor = [UIColor lightGrayColor]; //optional
    }
    [textView resignFirstResponder];
}

-(void)textViewDidChange:(UITextView *)textView
{
    int len = textView.text.length;
    charCount.text = [NSString stringWithFormat:@"%@: %i",  NSLocalizedString(@"CHARCOUNT", nil),len];
}

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    return YES;
}
尝试在传递文本后调用-sizeToFit。这个答案可能对Vertically align text within a UILabel有用。

[更新]
我更新这个答案o使它更可读。
问题是,从iOS7,容器视图控制器,如UINavigationController或UITabbarController可以更改滚动视图(或从其继承的视图)的内容插入,以避免内容重叠。只有scrollview是主视图或第一个子视图时才会发生。要避免您应该通过将automaticallyAdjustsScrollViewInsets设置为NO来禁用此行为,或者覆盖此方法以返回NO。

翻译自:https://stackoverflow.com/questions/19468417/ios-7-uitextview-vertical-alignment

转载注明原文:iOS 7 UITextView垂直对齐