如何根据textview增加工具栏的大小,点击返回时应该移动到新行。工具栏的长度应该随着文本在uitextview中的输入而增加
text view which is in toolbar
my code is below
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
textView = [[UITextView alloc] initWithFrame:CGRectMake(100, 10, 200, 42)];
textView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:textView];
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320.f, 80.f)];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStylePlain target:self action:@selector(close)];
toolbar.items = [NSArray arrayWithObjects:doneButton,barItem,nil];
textView.inputAccessoryView=toolbar;
textView.delegate=self;
[self.view addSubview:toolbar];
}
答案 0 :(得分:0)
添加此代码。它并不完美,需要改进,但核心理念就是那样
- (void)textViewDidChange:(UITextView *)textView
{
UIToolbar *toolbar = textView.superview; // you should use your stored property or instance variable here
CGRect textViewFrame = textView.frame;
textViewFrame.size.height = textView.contentSize.height;
textView.frame = textViewFrame;
textViewFrame.size.height += 40.0f; // the text view padding
toolbar.frame = textViewFrame;
}
答案 1 :(得分:0)
viewDidLoad 中没有正确的视图框架/尺寸。 您应该在 viewDidLayoutSubviews 中调整大小。 阅读更多here:
如果您使用自动布局,请为刚刚创建的每个视图指定足够的约束,以控制您的位置和大小 观点。否则,实现viewWillLayoutSubviews和 viewDidLayoutSubviews调整子视图帧的方法 视图层次结构。请参阅“调整视图控制器视图的大小。”
答案 2 :(得分:0)
因为textView使用ScrollView,所以检查contentSize似乎是一种很好,简单的方法来做你想要的。
所以......简化 storoj 的例子:
- (void)textViewDidChange:(UITextView *)textView
{
float newHeight = textView.contentSize.height;
if(newHeight < 80){
}
else if (newHeight < self.view.frame.size.height){
[toolbar setFrame:CGRectMake(0, 0, 320, newHeight)];
[textView setFrame:CGRectMake(100, 10, 200, newHeight-40)];
}
}
注意:
不完美,但从此处继续。