을 통해 작동하지 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
내가 설정하면 텍스트 필드의 절반 이상을 볼 수 없습니다!
무슨 일이 벌어지고 있는지에 대한 아이디어가 있습니까?
텍스트 필드의 변경 사항이 주 스레드에 있는지 확인하십시오. JSC가 메서드를 호출하는 스레드가 확실하지 않기 때문에 답변으로 게시하지 않습니다. –
JS 컨텍스트가 주 스레드에서 실행 중입니다. – shrishaster
나머지 코드를 이해하지 않고 조언을 제공하기가 약간 어렵습니다. 예를 들어, UITextField 뒤에 다른 컨트롤을 만드시겠습니까? makeRootViewController()에 대해 표시되지 않은 코드는 어떻게됩니까? – Mike