2017-10-25 10 views
0

자습서를 읽는 동안 자습서의 다음 단계를 미리 판단하고 직접 시도하기로 결정했습니다. 목표는 IBAction 함수를 터치 이벤트에 연결하여 UITextField를 편집하면 UILabel을 업데이트하는 것입니다. 나는 연결 관리자의 'Editing Changed'옵션에 연결하는 것을 제안하는 튜토리얼에 앞서 뛰어 들었지만, 모르게 구두로 이해하기 때문에 'Edited Did Begin'에 연결했다.UIControlEvent 객체의 editingDidBegin 속성에 대한 용어로 '세션'이라는 용어는 무엇을 의미합니까?

응용 프로그램을 실행했는데 UILabel이 업데이트되지 않았습니다. 따라서 튜토리얼을 천천히 다시 읽었으며 '변경된 편집'터치 이벤트를 사용해야한다는 사실을 알게되었습니다. 애플의 참고 자료 UIControlEvents을 확인한 후 처음에는 왜 작동하지 않았는지 이해하고 싶었습니다. '편집 세션'이라는 용어를 사용하는 것으로 나타났습니다. 누구든지 세션이 무엇인지 설명 할 수 있습니까?

이 방법을 사용하면 첫 번째 시도에서 내 프로세스가 작동하지 않는 이유를 이해할 수 있습니다.

class ConversionViewController: UIViewController { 
    @IBOutlet var celsiusLabel: UILabel! 
    @IBAction func fahrenheitFieldEditingChanged(textField: UITextField){ 
     celsiusLabel.text = textField.text 
    } 
} 

enter image description here

답변

2

은 "편집 세션은"단지 사용자가 시간에 (텍스트 필드에 포커스를 얻을 수) 텍스트 필드와 상호 작용을 시작할 때까지의 시간입니다 사전에 감사합니다 사용자가 텍스트 필드와 상호 작용을 끝내면 (텍스트 필드가 포커스를 잃음)

다른 말로하면, 사용자가 텍스트 필드를 탭하면 키보드가 표시되고 (일반적으로) "편집을 시작했습니다"이벤트가 보내지고 세션이 시작됩니다. 텍스트가 변경되면 (예 : 타이핑, 자르기 또는 붙여 넣기) 변경 될 때마다 "변경 사항 편집 중"이벤트가 발생합니다. 포커스가 텍스트 필드를 떠나면 키보드가 닫히고 "편집 완료"이벤트가 보내지고 세션이 끝납니다.

"편집 세션"은 단순한 상위 개념입니다.

이벤트가 전송 될 때 텍스트 필드가 변경되지 않으므로 "편집을 시작했습니다."이벤트에 연결하면 코드가 작동하지 않습니다. 이것은 단순히 텍스트 필드에 포커스가 있음을 알려주는 이벤트입니다. 그게 전부 야.