如何增加其中包含textview的工具栏的大小

时间:2013-10-22 12:34:54

标签: ios objective-c uitextview uitoolbar

如何根据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];
}

3 个答案:

答案 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)];
    }
}

注意:

  • UIToolbar *工具栏; (在班级的.h文件中声明)
  • 这些是特定于您的示例的硬编码值,因此根据您的要求进行优化
  • (newHeight&lt; 80) - 其中80是工具栏的初始或最小高度
  • (newHeight&lt; self.view.frame.size.height) - 其中self.view.frame.size.height为您提供整个视图的高度,并防止增加超出视图范围的子视图帧。

不完美,但从此处继续。