2012-10-21 3 views
1

변경 사항을 편집 할 때 계산을 실행하고 레이블을 업데이트하는 텍스트 필드가 있습니다. 텍스트 필드는 textField를 사용하여 통화 용으로 형식이 지정됩니다. shouldChangeCharactersInRange :변경 사항 편집은 IOS5에서는 작동하지만 IOS6에서는 작동하지 않습니다. textField : shouldChangeCharactersInRange :

라벨은 통화 형식으로도 형식이 지정됩니다.

IOS 5에서는 레이블이 텍스트 필드에 입력 된대로 레이블이 업데이트됩니다.

IOS 6에서는 값이 다른 텍스트 필드에 입력 될 때까지 레이블이 업데이트되지 않습니다.

IOS6 또는 Xcode4.5에서 변경된 내용이 변경되었거나 변경되었습니다. textChange : shouldChangeCharactersInRange : 다른 방식으로 작동합니까?

답변

1

예 저는 같은 일을 눈치 채 셨습니다. shouldChangeCharactersInRange가 "NO"를 반환하는 경우에만 editChanged가 호출되지 않을 것입니다. 그렇다고해도 이것이 버그이며 Apple에보고되어야한다고 생각하십시오. EditingChanged 이벤트는 UITexField가 UIControl에서 상속 한 이벤트 일 뿐이며, 변경 사항이있을 경우 shouldChangeCharactersInRange가 "NO"를 반환하더라도 텍스트 필드가 알아야하는 경우에도 Apple이 작업을 중단해야하는 이유를 알 수 없습니다.

내가하고있는 일은 코드를 editingChanged 이벤트에서 shouldChangeCharactersInRange 메서드로 직접 옮기는 것입니다. 의미, 내가 "아니오"를 반환하면 나는 editingChanged 이벤트를 호출하고 싶었을 코드를 임베드합니다. 대부분의 경우 작동해야합니다. 희망이 도움이됩니다.

+0

문제의 원인을 파악해 주셔서 감사합니다. 나는 코드를 옮기는 것 이외의 문제를 발견 할 수 있기를 바란다. 그것은이 응용 프로그램에서 저를위한 일의 톤 일 것입니다. – Gulfer

+0

아직 테스트하지 않은 또 다른 아이디어는 shouldChangeCharactersInRange 메서드 내에서 텍스트 필드의 텍스트가 변경되었다는 알림을 게시 한 다음 해당 알림을 관찰하여 editingChanged 메서드를 트리거하는 것입니다. . . –

+0

내 메소드를 트리거하기 위해 shouldChangeCharactersInRange에 알림을 게시했습니다. 도와 주셔서 다시 한번 감사드립니다 !! – Gulfer

관련 문제