2015-01-22 3 views
0

상단에있는 UITextView의 커서가 완전히 잘 보이지만 2 번째 UITextView 바로 아래에 커서가 있어야 3-4 줄이 오게됩니다. 그래서 아래 스크린 샷에서 볼 수있는 것처럼 아무 것도 입력하지 않으면 올바르지 않습니다. 이 뷰 컨트롤러의 코드는 스크린 샷 아래에 표시됩니다.커서가 UITextView 맨 위에 있지 않은 이유는 무엇입니까?

Screenshot of iOS simulator showing the text in UITextView placed a couple lines lower than they should be

class AddQuestionViewController: UIViewController, UITextViewDelegate { 

    @IBOutlet weak var questionTextView: UITextView! 
    @IBOutlet weak var answerTextView: UITextView! 
    @IBOutlet weak var doneBarButton: UIBarButtonItem! 
    @IBOutlet weak var questionLabel: UILabel! 
    @IBOutlet weak var answerLabel: UILabel! 

    weak var delegate: AddQuestionViewControllerDelegate? 

    override func viewWillAppear(animated: Bool) { 

     super.viewWillAppear(animated) 

     self.questionTextView.layer.borderWidth = 0.5 
     self.questionTextView.layer.borderColor = UIColor.lightGrayColor().CGColor 
     self.questionTextView.layer.cornerRadius = 8 

     self.answerTextView.layer.borderWidth = 0.5 
     self.answerTextView.layer.borderColor = UIColor.lightGrayColor().CGColor 
     self.answerTextView.layer.cornerRadius = 8 

     self.questionTextView.becomeFirstResponder() 

    } 

    @IBAction func cancel() { 

     delegate?.addQuestionViewControllerDidCancel(self) 

    } 

    @IBAction func done() { 

     let item = Question() 
     item.question = questionTextView.text 
     item.answer = answerTextView.text 
     item.checked = false 
     delegate?.addQuestionViewController(self, didFinishAddingQuestion: item) 

    } 

    func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool { 

     if textView == questionTextView { 
      let oldText: NSString = questionTextView.text 
      let newText: NSString = oldText.stringByReplacingCharactersInRange(range, withString: text) 

      if newText.length > 0 { 
       doneBarButton.enabled = true 
      } else { 
       doneBarButton.enabled = false 
      } 
     } 
     return true 
    } 

    func textViewDidChange(textView: UITextView) { 

     let temp: NSString = textView.text 

     if textView == questionTextView { 
      self.questionLabel.hidden = temp.length > 0 
     } else { 
      self.answerLabel.hidden = temp.length > 0 
     } 

    } 

    func textViewDidEndEditing(textView: UITextView) { 

     let temp: NSString = textView.text 

     if textView == questionTextView { 
      self.questionLabel.hidden = temp.length > 0 
     } else { 
      self.answerLabel.hidden = temp.length > 0 
     } 

    } 

} 
+0

난 더 IOS 개발자 (단지 OSX)를 해요 : 그들은 다를 수 있습니다 IB에서 설정을 확인합니다. 또한 (OSX)'becomeFirstResponder'는 더 이상 사용되지 않습니다. –

+0

둘 다에 대한 선택 설정. 아무것도 알아낼 수 없습니다 .. 이것은 이상한 문제입니다. – user2278764

+0

나는 과거보기 일뿐만 아니라 텍스트 뷰를 제거하고 다시 뷰에 추가하는 작업을 시도해 보았습니다 (제한 사항 포함). –

답변

0

는 대신 UITextView의 UILabel의를 수 있을까? UILabel은 텍스트를 "중앙에 배치"하고 왼쪽 구석에 정렬하지 않는 경향이 있습니다.

+0

Nope. UILabel도없이 발생합니다. – user2278764

0

당신은 아마 경우에 내가 이것을 게시하도록하겠습니다, 지금이 문제를 해결 한 :

self.automaticallyAdjustsScrollViewInsets = false 
textView.contentOffset = CGPointZero 
관련 문제