2011-11-03 2 views
5

우선 내가 알고있는 contenteditable은 iOS 5뿐입니다. iOS 5 사용자에게 contenteditable을 사용하여 서식있는 텍스트를 붙여 넣을 수있는 기능을 제공하고 있습니다. 이 기능은 훌륭하게 작동합니다. 지금까지 내가하고 싶은 것은 키보드가 나타나고 사용자가 바로 입력을 시작할 수 있도록 contenteditable 필드를 활성 (사전 선택)로 설정하는 것처럼 보이는 것입니다. 여기에 내가 이미 내가 텍스트 입력을 미리 선택에 대한 발견이 사용 자습서를 달성하기 위해 몇 가지 자바 스크립트를 사용하여 시도했습니다있는 UIWebViewUIWebView에서 contenteditable 필드를 미리 선택하는 방법

<html> 
    <body> 
     <div id="content" contenteditable="true" style="font-family: Helvetica">PLACEHOLDER</div> 
    </body> 
</html> 

에 내가 사용하고 로컬 HTML 파일입니다. 테스트를 위해 텍스트 입력 필드로 전환하려고 할 때도 작동하지 않습니다. 이것은 javascipt에 대한 나의 미숙함 때문일 것입니다. 그렇다면 해결책이 명확해야합니다 (javascript에 완전히 익숙하지 않음). 어떤 도움

답변

4

불행히도 모바일 사파리에서는 할 수 없습니다. 나는 애플이 이런 일이 발생하지 못하도록 제한했다고 생각한다. 예를 들어 구글과 같은 일부 사이트를 방문 할 때 검색 필드가 즉시 집중되기 때문이다. 사용자가 사이트를 방문하면 키보드가 튀어 나오게되어 매우 귀찮은 일입니다. 데스크톱에서이 동작은 중요하지 않지만 모바일 장치에서는 매우 눈에.니다.

관련 : 당신이 클릭 이벤트 핸들러의 상황에있는 경우 키보드를 소환 할 수 Mobile Safari Autofocus text field

+0

감사합니다. 내가 의심하는 바가 있습니다.하지만 확인하고 싶었습니다. – xizor

0

에 대한

덕분에 나는 iOS에서의 contentEditable에 대한 아무런 정보가 없다하지만 난 당신이 단순히 범위를 생성하고 선택에 추가 할 수 있어야한다고 생각합니다.

var input; // your contenteditable element 
var range = document.createRange(); 
range.selectNodeContents(input); 

var sel = window.getSelection(); 
sel.removeAllRanges(); 
sel.addRange(range); 
+1

최신 데스크톱 브라우저에서 작동합니다. 하지만 iOS 5의 모바일 사파리에는 적합하지 않습니다. –

+0

잘 알고 있습니다. –

2

. 예를

를 들어

document.body.addEventListener('click', function() { 
    content.focus(); 
}, false); 

다음

이제 사람, 그는 프로그램이 같은 아이폰 OS 키보드를 열 수 있습니다 아이폰 OS 6이 달성하고자하는 경우
+0

이 작품! 실제 동작은 이보다 약간 관대합니다 (contentEditable에 초점을 맞출 수있는 다른 경우 나 이벤트가 있음). 그러나 그렇게 대단히 예측할 수 없으므로 문서화 할 가치가 없습니다. – aaaidan

7

,

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 

    // keyboardDisplayRequiresUserAction available in iOS >= 6 
    if ([webView respondsToSelector:@selector(setKeyboardDisplayRequiresUserAction:)]) { 
     webView.keyboardDisplayRequiresUserAction = NO; 
    } 
} 

하고,

작동합니다
- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    // Assuming that you're using jquery. If not, use document.getElementById('YourInputElementID') 
    NSString *evalStr = [NSString stringWithFormat:@"setTimeout(function(){$('#YourInputElementID').focus();},1000);"]; 
    [webView stringByEvaluatingJavaScriptFromString:evalStr]; 
} 

1 초 후에이 자바 스크립트가 실행됩니다. 안전한면을 위해 포커싱 요소가로드 될 때 포커스 코드 가져 오기를 호출해야합니다.

+0

매우 훌륭하게 작동합니다. –

+0

InterfaceBuilder에서'keyboardDisplayRequiresUserAction'을 설정하지 못했지만 그것을 코드에 추가하여 수정했습니다. 위의 코드가 읽는 사람에게 맞지 않으면 런타임에 속성이 실제로 설정되어 있는지 확인하십시오. – tharkay

관련 문제