2016-09-26 7 views
0

Существует проект о github о росте UITextView здесь https://github.com/KennethTsang/GrowingTextView Я загрузил его в свое приложение swift и выполнил инструкции на их странице.Как настроить мои ограничения, чтобы мой UITextView отображался только тогда, когда пользователь прокручивает UITableView?

Это мой код:

override func viewDidLoad() { 


    let textView = GrowingTextView() 
    textView.delegate = self 
    textView.layer.cornerRadius = 4.0 
    textView.maxLength = 200 
    textView.maxHeight = 70 
    textView.trimWhiteSpaceWhenEndEditing = true 
    textView.placeHolder = "Say something" 
    textView.placeHolderColor = UIColor(white: 0.8, alpha: 1.0) 
    textView.placeHolderLeftMargin = 5.0 
    textView.font = UIFont.systemFontOfSize(15) 

    inputToolbar.translatesAutoresizingMaskIntoConstraints = false 
    textView.translatesAutoresizingMaskIntoConstraints = false 
    textView.returnKeyType = UIReturnKeyType.Send 
    inputToolbar.addSubview(textView) 
    let views = ["textView": textView] 
    let hConstraints = NSLayoutConstraint.constraintsWithVisualFormat("H:|-8-[textView]-8-|", options: [], metrics: nil, views: views) 
    let vConstraints = NSLayoutConstraint.constraintsWithVisualFormat("V:|-8-[textView]-8-|", options: [], metrics: nil, views: views) 
    inputToolbar.addConstraints(hConstraints) 
    inputToolbar.addConstraints(vConstraints) 

Этот UITextView находится под UITableView:

enter image description here

UIBottomBar имеет 4 ограничения: leading, trailing, bottom и top, где top это равно до UITableView низ.

UITableView также имеет ограничения: 4 leading, trailing, top и bottombottom, где это равняется UIBottomBar вершине.

Я также подключен IBOutlet к bottom скованности UIBottomBar и я его изменения в коде:

@IBOutlet weak var bottomConstraint: NSLayoutConstraint! 

func keyboardWillChangeFrame(notification: NSNotification) { 
    let endFrame = (notification.userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue() 
    bottomConstraint.constant = CGRectGetHeight(view.bounds) - endFrame.origin.y 
    self.view.layoutIfNeeded() 
} 

Все работает довольно хорошо. Мне нужно ввести здесь изменение - textView скрыт, когда прокручивается UITableView. Но когда пользователь начинает прокручивать его - появляется textView и работает как следует - растет с каждой новой строкой текста.

Я думал об использовании метода scrollViewDidScroll на моем UITableView, но я не знаю, как настроить определенные ограничения там.

Это то, что я до сих пор есть:

func scrollViewDidScroll(scrollView: UIScrollView) { 
    if (scrollView.contentOffset.y < 100) { 


    }else { 


    } 
} 

теперь мне нужно, чтобы включить ограничение изменения в этом if-else заявлении. Можете ли вы мне помочь?

+0

бит сложного, проясните здесь, что вы хотите скрыть текстовое окно, когда прокрутка таблицы просматривается? –

+0

@SatishMavani, когда пользователь открывает панель, и таблица видна сверху, тогда текст 'textview' должен быть скрыт. Он должен появиться, когда пользователь начнет прокрутку вниз – user3766930

+0

. Я попытался с пометкой 'textView.hidden = true' в' '' '' '' '' '', но тогда, даже если 'textView' скрыт,' uitableView' не растянут на дно экран. – user3766930

ответ

0

Во-первых, вы должны установить ограничение высоты на супер-вид текстового изображения и установить верхнее и нижнее ограничение 0 текстового поля.

Тогда вам придется увеличить высоту вашего супер зрения динамически текст сделал метод изменения делегат TextView

- (void)textViewDidChange:(UITextView *)textView 
{ 
    CGFloat fixedWidth = textView.frame.size.width; 
    CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)]; 

    if (newSize.height>133) 
     self.containerCiewHeightConstraints.constant=153; 
    else if (newSize.height<36){ 
     self.containerCiewHeightConstraints.constant=50; 
    } 
    else 
     self.containerCiewHeightConstraints.constant=newSize.height+18; 

} 

Здесь containerCiewHeightConstraints это ограничение моего супер зрения и 50 и 133 мин, а максимальная высота моего textview