다중 행 UI 텍스트 필드를 만드는 방법은 무엇입니까?
나는 사용자가 정보를 작성해야 하는 애플리케이션을 개발하고 있습니다.는 이목을위저필요니다합는해적다▁a니▁need합요▁for필▁i▁this이는저가 필요합니다.UITextField
으로 (으)로 표시됨)입니다.UITextField
는 단일 행입니다.
제가 구글링을 하고 있기 때문에, 저는 사용하는 답을 찾습니다.UITextView
에 UITextfield
이를 위하여
UITextField
한 줄만 사용할 수 있습니다.
의 구글이 맞습니다, 은 구글을 사용해야 .UITextView
에 UITextField
여러 줄 텍스트를 표시하고 편집할 수 있습니다.
에서 "a" "a" "를 합니다.UITextView
원하는 위치에서 "선택" 상자를 선택합니다.기본적으로 여러 줄로 되어 있습니다.
UITextView를 사용하여 UITextField를 위장할 수 있습니다.플레이스홀더 기능이 손실되는 문제가 발생합니다.
UITextView를 사용하도록 선택하고 자리 표시자가 필요한 경우 다음 작업을 수행합니다.
보기에서 DidLoad는 색상과 텍스트를 자리 표시자로 설정합니다.
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
UI 텍스트 필드는 일반적으로 스크롤되지 않습니다.
myTxtView.scrollEnabled = false
네, 저는 약간의 속임수로 그것을 했습니다;) 먼저 a를 만듭니다.UITextField
그리고 그것을 늘렸습니다.size
과 같이 런식으로이::
CGRect frameRect = textField.frame;
frameRect.size.height = 53;
textField.frame = frameRect;
다음 런그다빌드를 만듭니다.UITextView
정확히 당신이 내게 만든 것과 같은 지역에서.UITextField
그것의 습다니했삭을 삭제했습니다.background color
.TextField
!
다중 행 동작 외에도 UITextView와 UITextField의 주요 차이점은 UITextView가 자리 표시자를 제안하지 않는다는 것입니다.이 제한을 무시하려면 "가짜 자리 표시자"가 있는 UITextView를 사용할 수 있습니다.
자세한 내용은 다음 SO 질문을 참조하십시오: UITextView의 자리 표시자.
두 줄의 텍스트가 있는 UI 텍스트 필드가 있어야 하는 경우 한 가지 옵션은 두 번째 텍스트 행에 대한 UI 텍스트 필드의 하위 뷰로 UI 레이블을 추가하는 것입니다.앱에 UITextField가 있지만 사용자가 탭을 눌러 편집할 수 있는지 모르는 경우가 많습니다. UITextField에 "Tap to Edit(편집하려면 탭)"이라는 작은 부제 텍스트를 추가하려고 합니다.
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가 필요합니다.반환 키와 같은 일부 사항은 다르게 처리해야 하지만 텍스트를 추가할 수 있으며, 텍스트가 너무 많으면 위아래로 스크롤할 수 있습니다.
이 링크에는 데이터를 입력하는 화면을 만드는 방법에 대한 정보가 있습니다.
'override func viewDidLoad(){
super.viwDidLoad()
YOUR_TEXT_VIEW.textColor = UIColor.gray // YOUR PREFERRED PLACEHOLDER COLOR HERE
YOUR_TEXT_VIEW.text = "YOUR DEFAULT PLACEHOLDER TEXT HERE"
YOUR_TEXT_VIEW.delegate = self
}'
이 코드 블록으로 충분합니다.다음 확장자를 사용하기 직전에 viewDidLoad 또는 스토리보드에서 대리자를 설정하는 것을 잊지 마십시오.
extension YOUR_VIEW_CONTROLLER: UITextViewDelegate {
func textViewDidBeginEditing (_ textView: UITextView) {
if YOUR_TEXT_VIEW.text.isEmpty || YOUR_TEXT_VIEW.text == "YOUR DEFAULT PLACEHOLDER TEXT HERE" {
YOUR_TEXT_VIEW.text = nil
YOUR_TEXT_VIEW.textColor = .red // YOUR PREFERED COLOR HERE
}
}
func textViewDidEndEditing (_ textView: UITextView) {
if YOUR_TEXT_VIEW.text.isEmpty {
YOUR_TEXT_VIEW.textColor = UIColor.gray // YOUR PREFERED PLACEHOLDER COLOR HERE
YOUR_TEXT_VIEW.text = "YOUR DEFAULT PLACEHOLDER TEXT HERE"
}
}
}
UITextField 대신 UITextView 사용
위의 h4xxr의 답변에 대한 보완으로, UI 텍스트 필드의 높이를 쉽게 조정하는 방법은 특성 검사기->텍스트 필드에서 사각 테두리 스타일을 선택하는 것입니다. (기본적으로 UI 텍스트 필드의 테두리 스타일은 타원입니다.)
참조:여기서 Brian이 대답했습니다: UITextField 높이를 설정하는 방법은 무엇입니까?
사용하다textView
대신에 그 대리인을 준수하고, 전화합니다.textViewDidChange
메서드 호출 내부의 메서드tableView.beginUpdates()
그리고.tableView.endUpdates()
그리고 설정하는 것을 잊지 마세요.rowHeight
그리고.estimatedRowHeight
로.UITableView.automaticDimension
.
제게 효과가 있었던 또 다른 옵션이 있습니다.
하위 클래스 UITextField 및 덮어쓰기:
- (void)drawTextInRect:(CGRect)rect
이 방법으로 예를 들어 다음을 수행할 수 있습니다.
NSDictionary *attributes = @{ NSFontAttributeName : self.font,
NSForegroundColorAttributeName : self.textColor };
[self.text drawInRect:verticalAlignedRect withAttributes:attributes];
이 코드는 정류에 충분한 공간이 있는 경우 필요한 만큼의 줄을 사용하여 텍스트를 렌더링합니다.필요에 따라 다른 속성을 지정할 수 있습니다.
사용 안 함:
self.defaultTextAttributes
한 줄의 텍스트 렌더링을 강제로 실행합니다.
언급URL : https://stackoverflow.com/questions/1345561/how-to-create-a-multiline-uitextfield
'itsource' 카테고리의 다른 글
iOS에서 사용자로부터 현재 위치를 가져오는 방법 (0) | 2023.04.27 |
---|---|
내 앱을 다시 배포하지 않고 Windows Azure에 배포된 클라우드 앱의 web.config를 편집할 수 있습니까? (0) | 2023.04.27 |
윈도우즈의 Ubuntu에서 Bash에 붙여넣기 복사 (0) | 2023.04.27 |
WPF 템플릿 바인딩과 상대 소스 템플릿화된 상위 항목 (0) | 2023.04.27 |
파일 또는 어셈블리 '시스템'을 로드할 수 없습니다.런타임.Interop Services.런타임 정보 (0) | 2023.04.27 |