2016-07-04 2 views
1

정적 인 UItableView가 있고 그 셀 중 하나에 텍스트 뷰가 포함되어 있고 텍스트 뷰를 자동 증가 가능하게 만들고 셀이 동시에 커지도록하려고합니다. 항상 텍스트를 자르지 않고 감싸는 것.UITableView 셀에서 UITextView 자동 자로 변환

isoalted Text View에서는 크기가 고정되어 있고 긴 텍스트를 표시하기 때문에이 문제에 직면하지 않습니다. 텍스트 뷰 내부에서 스크롤 할 수 있지만이 경우에는 스크롤을 원하지만이 경우 UITextView는 nonScrolable 부모 (UITableView) 이미 스크롤 및 중첩 된 스크롤 않도록 싶습니다.

내 정렬 방식은 overrayde height ....입니다. 사용자가 sizeThatFits (size : CGSize)를 사용하여 입력 할 때마다 내보기를 다시로드하여 requerid 크기를 확인한 다음 UITextView 셀 크기를 설정하고 텍스트를 올바르게 입력하십시오.

그러나 셀이 조금만 커지면 부족하다는 것을 알기에 sizeThatFits에 대해 조사해 보았습니다. 객체가 다른 객체 안에 들어갈 수있는 메쏘 수를 얻는 방법인지 아니면 다른 매개 변수가 있는지 알아야합니다. 패딩, 여백, 또는 constriant 같은 걱정하고 그 물건이 설명되어 찾을 수 없습니다.

그럼이 질문이 있는데, 나는이 방법을 잘못 이해 했습니까? 내가 그것을 사용하는 방법 shoud? 내 목표에 도달하기위한 정확한 경로에 있습니까? 아니면 더 좋은 방법이 있을까요?

정말 고마워요.

override func tableView(tableView: UITableView, 
       heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

    let defaulHeight: CGFloat = 44 

    if indexPath.row == textFieldRowNumber { 
     let cellSize = messageTableViewCell.bounds.size 
     let wantedSize = longMessageTextField.sizeThatFits(cellSize) 
      return wantedSize.height 
    } else { 
     return defaulHeight 
    } 
} 


func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool { 
    textView.resignFirstResponder() 
    let previousMessageInput = longMessageTextField.text 
    longMessageTextField.text = previousMessageInput! + text 

    let indexToReload = NSIndexPath(forItem: 4, inSection: 0) 
    self.tableView.reloadRowsAtIndexPaths([indexToReload], withRowAnimation: UITableViewRowAnimation.Top)   
    return true 
} 

답변

0

sizeThatFits를 호출하는 대신 textView의 contentSize 속성을 읽으려고 했습니까?

관련 문제