2

이것은 StackOverflow에 대한 첫 번째 게시물이며 Xcode와 Objective-C를 처음 사용합니다. 대표단에 대한 기사를 읽었으며 다른 사람들의 코드도 실험했습니다. 그러나 다른 사람의 코드를 복사하지 않고도 대리자를 사용하는 무언가를 만들 수 있는지 알고 싶었습니다.UITextField에 텍스트가 입력 될 때 UILabel을 업데이트하는 방법

대리인을 이해하기 위해 노력한 것은 사용자가 키보드에서 키를 입력 할 때마다 레이블을 업데이트하는 UITextField 대리자를 얻는 것입니다.

xib 파일을 만들고 TextField를 내 .h 파일의 UITextField * myTextField 및 Label UILabel * myLabel에 연결했습니다.

또한 ViewController 클래스의 .h 파일에 추가되었습니다.

그러나 UITextFieldDelegate.h에 나열된대로 사용할 수있는 선택적 메서드는 편집이 끝난 후에 만 ​​업데이트 할 수 있기 때문에 사용할 대리자 메서드가 무엇인지 잘 모르겠습니다. 또한 내 xib 또는 AppDelegate.h 파일과 관련된 .h 파일에 AppDelegate 메서드를 넣어야하는지 잘 모르겠습니다.

나는 이에 대한 어떤 도움을 주시면 감사하겠습니다.

당신은 너무처럼의 UITextField에 알림 관찰자로의 UIViewController를 추가 할 수 있습니다

답변

1

을 당신은 당신의 펜촉 IB에 연결하여 펜촉 IB TextField 객체에 연결된 UITextField에 myTextField로, 그리고 UILabel의 myLabel이 그래서 경우 Label 객체를 사용하고 Textfield가 파일 소유자를 가리 키도록 설정 한 다음 이것을 사용하면 도움이되는지 확인할 수 있습니다.

방금 ​​입력 했으므로 테스트하지 않았으므로 먼저 오류를 확인하십시오.

// ViewController.h 
@interface ViewController : UIViewController <UITextFieldDelegate> { 
    IBOutlet UILabel *myLabel; 
    IBOutlet UITextField *myTextField; 
} 
@property (nonatomic, retain) UILabel *myLabel; 
@property (nonatomic, retain) UITextField *myTextField; 
@end 


// ViewController.m 
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    myLabel.text = myTextField.text; 
    return YES; 
} 
+0

감사합니다. 예, 이것이 효과가있었습니다. – user1363388

+0

이것은'UITextInput' 프로토콜을 사용해야하는 반면, 이것에 대한 임시 해결 방법입니다 –

+0

거기에 applescript objc 버전이 있습니까? 고마워요 –

6

:

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

- (void)textFieldDidChange:(UITextField *)textField { 
} 
0
import UIKit 

class ViewController: UIViewController , UITextFieldDelegate { 
    // Create a label Outlet 
    @IBOutlet weak var label: UILabel! 
    // TextField Outlet 
    @IBOutlet weak var textField: UITextField! 
    // Select the textfield and in connection inspector drag a action from editing changed to the source code 
    @IBAction func changed(_ sender: Any) { 
     // Set text to label 
     label.text = textField.text 
     } 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     //Delegate to self 
     textField.delegate = self 
     textField.autocorrectionType = .no 
    } 
    // Implement the protocols 
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
     return true 
    } 
    func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
     textField.resignFirstResponder() 
     return true 
    }} 
+0

기본적으로 doWndEditing의 액션에서 값을 설정할 인스턴스 변수에 값을 설정하려면 액션과 그에 해당하는 프로토콜이 필요합니다. 그러나 'code'를 구현해야합니다 textFieldDidEndEditing' – Nitrousjp

관련 문제