사용자가 정보를 작성 해야하는 응용 프로그램을 개발 중입니다. 이를 위해 UITextField
다중 라인 인 것이 필요합니다 (일반적 UITextField
으로 단일 라인입니다).
인터넷 검색 UITextView
을 UITextfield
할 때이 목적 대신에 사용하는 답변을 찾으십시오 .
사용자가 정보를 작성 해야하는 응용 프로그램을 개발 중입니다. 이를 위해 UITextField
다중 라인 인 것이 필요합니다 (일반적 UITextField
으로 단일 라인입니다).
인터넷 검색 UITextView
을 UITextfield
할 때이 목적 대신에 사용하는 답변을 찾으십시오 .
답변:
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;
그런 다음 UITextView
u가 만든 것과 동일한 영역에 정확히 빌드 UITextField
하고 삭제하십시오 background color
. 이제는 여러 줄이있는 것처럼 보입니다 TextField
!
UITextView
됩니다. UITextField를 갖는 요점은 a와 다르게 동작한다는 것 UITextView
입니다.
UITextView
그리고 UITextfield
: 그들은에서 상속 UIScrollView
VS UIControl
-편집 할 수 없습니다별로 기본적으로 기본 편집-대, 여러 대 한 줄, 다른 위임 프로토콜, 노 자리 대 자리.
UITextView
텍스트 단락입니다. 텍스트 단락이 필요한 경우에는 사용하고 그렇지 않으면 사용하십시오.
여러 줄의 동작 외에도 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가 찾고 있습니다. 리턴 키와 같이 다르게 처리해야하지만 텍스트를 추가 할 수 있으며 텍스트가 너무 많으면 위아래로 스크롤 할 수 있습니다.
이 링크에는 화면을 만들어 데이터를 입력하는 방법에 대한 정보가 있습니다.
위의 h4xxr의 답변을 보완하는 UITextField의 높이를 조정하는 더 쉬운 방법은 속성 관리자-> 텍스트 필드에서 사각형 테두리 스타일을 선택하는 것입니다. 기본적으로 UITextfield의 테두리 스타일은 타원입니다.
참조 : 여기에 Brian 대답 : UITextField 높이를 설정하는 방법은 무엇입니까?
나를 위해 일한 다른 옵션이 있습니다.
서브 클래스 UITextField 및 덮어 쓰기 :
- (void)drawTextInRect:(CGRect)rect
이 방법에서는 다음과 같은 작업을 수행 할 수 있습니다.
NSDictionary *attributes = @{ NSFontAttributeName : self.font,
NSForegroundColorAttributeName : self.textColor };
[self.text drawInRect:verticalAlignedRect withAttributes:attributes];
이 코드는 rect에 충분한 공간이 있으면 필요한만큼 많은 행을 사용하여 텍스트를 렌더링합니다. 필요에 따라 다른 속성을 지정할 수 있습니다.
사용하지 마세요:
self.defaultTextAttributes
한 줄 텍스트 렌더링을 강제합니다.