2014-04-27 1 views
1

을 통해 작동하지 UITextField입니다.내가 최근에 지금은 UILabel의,있는 UIButton 및 JSCore를 사용하여 UI 요소의 몇 가지 이상을 사용 할 수있었습니다까지</p> <p>아이폰 OS 7에 JavaSciptCore을 탐험하기 시작 JavaScriptCore는 iOS7에

하지만 이제는 UITextField를 사용하는 동안 막혔습니다. 어떤 이유로 화면에 나타나지 않지만 모든 코드가 실행 중입니다.

내 .h 파일은 인터페이스에 구현 된 프로토콜에서 다음과 같습니다.

- (void)set:(JSValue *)config; 
+ (id)create; 

위의 기능이 정의되어 있습니다.

+ (RZTextField *)create 
{ 
    RZTextField *textField = [[RZTextField alloc] init]; 
    return textField; 
} 

-(void)set:(JSValue *)config 
{ 
    if (![config[@"text"] isUndefined]) { 
     self.text = [config[@"text"] toString]; 
    } 

    if (![config[@"textColor"] isUndefined]) { 
     self.textColor = [Utils makeColor:[config[@"textColor"] toArray]]; 
    } 

    if (![config[@"frame"] isUndefined]) { 
     self.frame = [Utils makeFrame:[config[@"frame"] toArray]]; 
     self.keyboardType = UIKeyboardTypeDefault; 
     self.borderStyle = UITextBorderStyleRoundedRect; 
    } 

    if (![config[@"background"] isUndefined]) { 
     self.background = [Utils makeColor:[config[@"background"] toArray]]; 
    } 
} 

그리고 마지막으로이 실행 가져옵니다 JS 코드 :

//root view controller is created 
App.rootVC = UI.ViewController.create(); 
App.rootVC.makeRootViewController(); 
App.rootVC.set({ background: [231, 76, 60, 1] }); 

App.textF = UI.TextField.create(); 
App.textF.set({ 
    frame:[20, 500, 300, 120], 
    text: "some text", 
    textColor:[255, 255, 255, 1], 
    background:[255, 255, 255, 1] 
}); 
App.rootVC.append(App.textF); 

내가 그렇게 다음 내 자신에 대한 몇 가지 디버깅을했다는 점입니다 - 나는 중단 점을 설정하고 확인했다. 모든 함수 호출로 이동합니다. 그래서 모든 것이 처형되고 있습니다. - 루트보기 컨트롤러가 정상적으로 작동하고 다른 UI 요소를 정상적으로 추가 할 수있었습니다. - UITextField가 성공적으로 추가됩니다. 나는 텍스트 필드의 부모를 검사했을 때 루트 뷰 컨트롤러의 주소를 반환하기 때문에 이것을 알고있다. - create 함수에서 initWithFrame:을 수행 한 몇 가지 이유로 인해 루트보기 컨트롤러가 부분적으로 보이는 화면이었던 것처럼 텍스트 필드의 일부가 표시되었습니다! 그래서 무엇이든 frame 내가 설정하면 텍스트 필드의 절반 이상을 볼 수 없습니다!

무슨 일이 벌어지고 있는지에 대한 아이디어가 있습니까?

+0

텍스트 필드의 변경 사항이 주 스레드에 있는지 확인하십시오. JSC가 메서드를 호출하는 스레드가 확실하지 않기 때문에 답변으로 게시하지 않습니다. –

+0

JS 컨텍스트가 주 스레드에서 실행 중입니다. – shrishaster

+0

나머지 코드를 이해하지 않고 조언을 제공하기가 약간 어렵습니다. 예를 들어, UITextField 뒤에 다른 컨트롤을 만드시겠습니까? makeRootViewController()에 대해 표시되지 않은 코드는 어떻게됩니까? – Mike

답변

0

나는 OS X 용 JavaScriptCore 주위 래퍼 그것은 iOS에서 실행되지 않습니다하지만 지금까지의 내가 이식 할 수있는 알고있는, 그래서 아마 당신은 포팅 시도하려는이 CocoaScript 약간의 경험, JSTalk의 새 이름을 그것.

나는 CocoaScript 다르게 않는, 혹은 다르게 무엇을하고 있는지 모르겠지만, 자바 스크립트의이 비트에 텍스트 필드 작업 전혀 문제가 없다 : https://github.com/abhibeckert/Dux/blob/master/Default-Bundles/Lorem%20Ipsum.coscript