[ios] 여러 줄의 UITextfield를 만드는 방법은 무엇입니까?

사용자가 정보를 작성 해야하는 응용 프로그램을 개발 중입니다. 이를 위해 UITextField다중 라인 인 것이 필요합니다 (일반적 UITextField으로 단일 라인입니다).

인터넷 검색 UITextViewUITextfield할 때이 목적 대신에 사용하는 답변을 찾으십시오 .



답변

UITextField 특히 한 줄만입니다.

Google 검색이 정확하므로 여러 줄로 된 텍스트를 표시하고 편집 하는 UITextView대신 사용해야 UITextField합니다.

Interface Builder에서 UITextView원하는 위치를 추가 하고 “편집 가능”상자를 선택하십시오. 기본적으로 여러 줄로 표시됩니다.


답변

UITextView를 사용하여 UITextField를 위조 할 수 있습니다. 문제는 자리 표시 자 기능이 손실된다는 것입니다.

UITextView를 사용하도록 선택하고 자리 표시자가 필요한 경우 다음을 수행하십시오.

viewDidLoad에서 색상과 텍스트를 자리 표시 자로 설정하십시오.

myTxtView.textColor = .lightGray
myTxtView.text = "Type your thoughts here..."

그런 다음 UITextView를 선택하면 자리 표시자가 사라집니다.

func textViewDidBeginEditing (textView: UITextView) {
    if myTxtView.textColor.textColor == ph_TextColor && myTxtView.isFirstResponder() {
        myTxtView.text = nil
        myTxtView.textColor = .white
    }
}

사용자가 편집을 마치면 값이 있는지 확인하십시오. 없으면 자리 표시자를 다시 추가하십시오.

func textViewDidEndEditing (textView: UITextView) {
    if myTxtView.text.isEmpty || myTxtView.text == "" {
        myTxtView.textColor = .lightGray
        myTxtView.text = "Type your thoughts here..."
    }
}

가짜해야 할 다른 기능 :

UITextField는 종종 모든 문자를 대문자로 표시하므로 해당 기능을 UITableView에 추가 할 수 있습니다.

myTxtView.autocapitalizationType = .words

UITextField는 일반적으로 스크롤되지 않습니다.

myTxtView.scrollEnabled = false


답변

좋아, 나는 약간의 트릭으로 그것을했다;) 먼저 빌드하고 다음 UITextField과 같이 증가시켰다 size.

CGRect frameRect = textField.frame;
        frameRect.size.height = 53;
        textField.frame = frameRect;

그런 다음 UITextViewu가 만든 것과 동일한 영역에 정확히 빌드 UITextField하고 삭제하십시오 background color. 이제는 여러 줄이있는 것처럼 보입니다 TextField!


답변

여러 줄의 동작 외에도 UITextView와 UITextField의 주요 차이점은 UITextView가 자리 표시자를 제안하지 않는다는 것입니다. 이 제한을 무시하기 위해 “가짜 자리 표시 자”와 함께 UITextView를 사용할 수 있습니다.

자세한 내용은이 SO 질문을 참조하십시오 : UITextView의 자리 표시 자 .


답변

두 줄의 텍스트가있는 UITextField가 있어야하는 경우 한 가지 옵션은 두 번째 줄의 텍스트에 대한 UITextField의 하위보기로 UILabel을 추가하는 것입니다. 내 앱에 사용자가 자주 인식하지 못하는 UITextField를 탭하여 편집 할 수 있으며 “Tap to Edit”라는 작은 자막 텍스트를 UITextField에 추가하고 싶었습니다.

CGFloat tapLlblHeight = 10;
UILabel *tapEditLbl = [[UILabel alloc] initWithFrame:CGRectMake(20, textField.frame.size.height - tapLlblHeight - 2, 70, tapLlblHeight)];
tapEditLbl.backgroundColor = [UIColor clearColor];
tapEditLbl.textColor = [UIColor whiteColor];
tapEditLbl.text = @"Tap to Edit";

[textField addSubview:tapEditLbl];


답변

예, UITextView가 찾고 있습니다. 리턴 키와 같이 다르게 처리해야하지만 텍스트를 추가 할 수 있으며 텍스트가 너무 많으면 위아래로 스크롤 할 수 있습니다.

이 링크에는 화면을 만들어 데이터를 입력하는 방법에 대한 정보가 있습니다.

데이터 입력 화면을 만듭니다


답변

UITextField 대신 UITextView를 사용하십시오.