itsource

다중 행 UI 텍스트 필드를 만드는 방법은 무엇입니까?

mycopycode 2023. 4. 27. 22:22
반응형

다중 행 UI 텍스트 필드를 만드는 방법은 무엇입니까?

나는 사용자가 정보를 작성해야 하는 애플리케이션을 개발하고 있습니다.는 이목을위저필요니다합는해적다▁a니▁need합요▁for필▁i▁this이는저가 필요합니다.UITextField으로 (으)로 표시됨)입니다.UITextField는 단일 행입니다.

제가 구글링을 하고 있기 때문에, 저는 사용하는 답을 찾습니다.UITextViewUITextfield이를 위하여

UITextField한 줄만 사용할 수 있습니다.

의 구글이 맞습니다, 은 구글을 사용해야 .UITextViewUITextField여러 줄 텍스트를 표시하고 편집할 수 있습니다.

에서 "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

반응형