2014-04-14 4 views
1

저는 cocos2d 3.0 RC4를 사용하고 있습니다. CCTextFieldtextField을 입력하면 becomeFirstResponder 화면이 필요하지 않더라도 화면이 아래로 이동합니다. 이 애니메이션의 목적은 키보드로 덮여 있다면 텍스트 필드를 보여주는 것입니다. 그러나 텍스트 필드가 위에 있고 키보드를위한 충분한 공간이 있다면이 애니메이션 이벤트를 얻습니다. 그런 애니메이션을 비활성화 할 수 있습니까?CCTextField 편집 시작 후 화면 이동

+0

아직 해결되지 않았습니다 ... CCTextField는 거의 쓸모가 없습니다. – Jonny

답변

0

덕분에 나는 CCTextField 클래스에 다음 편집을했다 및 :

- (void) endFocusingOnTextField 
{ 
    if (!self.movesViewOnFocus) { 
     return; 
    } 

이것은 30 초의 해킹이며, 한 두 번 이상 테스트하지 않았습니다. 그러나 기본적으로 포커스 이동을 비활성화합니다. 물론 텍스트 필드가 이미 선택되어 있지만 적어도 시작일 경우 텍스트 필드를 켜면 작동하지 않습니다. 나는 그것을 Cocos2D 개발자에게 제안 할 것이다.

+0

제기 됨 https://github.com/cocos2d/cocos2d-swift/issues/1040 – Jonny

+0

이 코드를 사용하는 경우 명시 적으로 moveViewOnFocus를 앱 코드에서 NO로 설정하고 주석에이 기사에 대한 링크를 추가하십시오 . cocos2d가 향후에 업데이트 될 때,이 픽스가 거기에 들어간다는 보장이 없으며, 적어도이 픽션과 같은 잃어버린 픽스를 추적하는 것을 싫어합니다. – Jonny

1

CCTextfield는 focusOnTextField 메소드를 통해 CCDirector의 OpenGL보기를 이동합니다. 그런 다음 endFocusingOnTextField로 다시 이동합니다.

그래서 내가 시작하려는 곳에서 사용을 중지하려면. 오프셋을 계산하는 방법을 조정할 수 있다고 가정합니다.

헤더에 속성을 추가합니다 :

@property (nonatomic,assign) BOOL movesViewOnFocus; 

는 다음과 같이 구현을 편집

- (void) focusOnTextField 
{ 
    if (!self.movesViewOnFocus) { 
     return; 
    } 

Macgeo의 제안에