ProgramingTip

iPhone을 입력하는 동안 UITextField의 텍스트를 얻는 방법은 무엇입니까?

bestdevel 2020. 12. 2. 21:42
반응형

iPhone을 입력하는 동안 UITextField의 텍스트를 얻는 방법은 무엇입니까?


UITextField에 대한 변경 사항을 별도의 UILabel. UITextField사용자 가 입력 한 각 문자 이후 의 전체 텍스트를 사용하는 방법이 ? 현재이 방법을 사용하고 사용자가 입력 한 마지막 문자를 사용하지 않습니다.

UITextView"didChange"가 메서드 있다는 것을 알고 있지만 UITextField.

//does not capture the last character

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{

        [self updateTextLabelsWithText: textField.text];

    return YES;
}

각 문자를 입력 한 후 UITextField에서 텍스트를 가져 오려면 어떻게해야합니까?

감사합니다!


  1. 먼저 하나를 추가 UITextField하고 UILabel스토리 보드 / 펜촉에
  2. 할당 이제 IBOutlet하십시오 UILabel(여기서는 myLabel 을 사용 했습니다 )
  3. UITextFieldDelegate파일 소유자에게 할당 하고 .h 파일에서 동일한 대리를 구현합니다.
  4. 다음 코드 줄을 사용하십시오.

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
        [self updateTextLabelsWithText: newString];
    
        return YES;
    }
    
    -(void)updateTextLabelsWithText:(NSString *)string
    {
         [myLabel setText:string];
    }
    

도움이 되셨기를 바랍니다.


"Editing Changed"이벤트를 처리하기 만하면됩니다.

[textField addTarget:self 
              action:@selector(editingChanged:)
    forControlEvents:UIControlEventEditingChanged];

및 선택기 :

-(void) editingChanged:(id)sender {
   // your code
}

이 작업을 수동으로 수행하거나 "Editing changed"전송 된 이벤트를 Ctrl 키를 함께 사용할 채로 .h로 끌어서 editingChanged 메서드를 생성하여 스토리 보드를 사용할 수 있습니다.


Swift 2.0 이상

 class CheckInViewController: UIViewController, UITextFieldDelegate {

 override func viewDidLoad() {
    super.viewDidLoad()

    yourTextField.delegate = self

 }

 func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool {
    var updatedTextString : NSString = textField.text as NSString
    updatedTextString = updatedTextString.stringByReplacingCharactersInRange(range, withString: string)

    self.methodYouWantToCallWithUpdatedString(updatedTextString)
    return true
 }

}

개척 개척자에게 도움이되기를 바랍니다.


addTarget Swift 2.0+를 사용 Swift

   titleTextField.addTarget(self, action: #selector(textFieldTyping), forControlEvents: .EditingChanged)

그리고 구현 selector

func textFieldTyping(textField:UITextField)
{
    //Typing
}

Swift 3.0에서 :

기존의 솔루션 중 일부는 한 문자 중개인 이전 버전의 Swift 및 Obj-C 용이었습니다. 다음은 Swift 3.0에 사용하는 것입니다.

수업에서 텍스트를 자리 표시 표시했습니다.

var tempName = ""

ViewDidLoad에서 다음을 사용했습니다.

nameField.addTarget(self, action: #selector(typingName), for: .editingChanged)

그런 다음 다음과 같은 함수를 만들었습니다.

   func typingName(textField:UITextField){

        if let typedText = textField.text {
            tempName = typedText
            print(tempName)
        }
    }

Swift 3.0+ : 이것은 저에게 매우 잘 작동했습니다.

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    self.yourLabel.text = "\(textField.text ?? "")\(string)"
    return true
}

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        if textField == yourTextFieldOutletName
        {
           if yourTextFieldOutletName.isEmpty == false
           {
             youtlabelname.text = yourTextFieldOutletName.text!
            }


        }

        return true

    }

func textViewDidEndEditing(_ textView: UITextView) {
       if textField == yourTextFieldOutletName
            {
               if yourTextFieldOutletName.isEmpty == false
               {
                 youtlabelname.text = yourTextFieldOutletName.text!
                }


            } 
    }

참고 URL : https://stackoverflow.com/questions/10363856/iphone-how-to-get-uitextfields-text-while-typing

반응형