2014-03-30 3 views
0

jquery 크로스 워드 퍼즐 플러그인에서 작업 중이며 iOS 버전의 경우 셀을 클릭하면 .focus()를 사용하는 함수가 호출됩니다. 터치 스크린 키보드. 편지 키를 누를 때 다음 셀로 이동하여 동일한 클릭 이벤트를 호출하고 입력 준비가되도록 설정 한 것입니다. 이것은 PC에서 잘 작동하지만 어떤 이유로 키를 누른 후에 불려질 때가 아니라 정기적 인 클릭이 키보드를 불러옵니다. 셀은 내부에 입력 태그가있는 div입니다.포커스가있는 iOS 키보드 가져 오기

function cellClick(event) 
{ 

moveToCell("#" + event.currentTarget.id); 

_cwo.onWord = false; 
var dir = getNewDirection(_cwo.currRow, _cwo.currCol); 
_cwo.direction = dir; 

alignClue("A", _cwo.clues["across"]); 
alignClue("D", _cwo.clues["down"]); 

}; 

function moveToCell(id) // put the cursor in the given cell 
{ 
    $(_cwo.currCell).css('background-color', 'white'); 
    $(id).css('background-color', _cwo.currentCellColor); 

    _cwo.currRow = $(id).data('row'); 
    _cwo.currCol = $(id).data('col'); 
    _cwo.currCell = "#" + cellID(_cwo.currRow, _cwo.currCol); 
    $(_cwo.currCell).focus(); 

}; 


function keyUp(event) 
{ 

if (event.currentTarget.tagName != "HTML") return; 

if(event.which == 13){ 
    var dir = getDirection(_cwo.currRow, _cwo.currCol); 
    if(dir == "across")goAcross(true); 
    else 
    goDown(true); 
} 

if (
(32 == event.which) || 
((64 < event.which) && (event.which < 91)) || 
((96 < event.which) && (event.which < 123)) 
) 
{ 

_char = codeToChar(event.which); 
if (_char == _cwo.NA) return; 
$(_cwo.currCell).data('player', _char); 
paintCell(_cwo.currCell, 'player'); 


if(_cwo.direction == 'across')goAcross(false); 
if(_cwo.direction == 'down')goDown(); 
} 


alignClue("A", _cwo.clues["across"]); 
alignClue("D", _cwo.clues["down"]); 
$("#" + cellID(_cwo.currRow, _cwo.currCol)).click(); //calls cellClick 

}; 

//Will prevent keys from being repeated on input 
$('*').keydown(function(e){ 
    e.preventDefault(); 
}); 

답변

0

이 내가 필요했던 동일한 문제가 될 것으로 보인다, 그 또한 여기에 설명되었습니다 : 이 Mobile Safari Autofocus text field

그 토론에서 결말이 있다는 것입니다 여기에

내 코드입니다 프로그래밍 방식으로 요소를 집중시킬 수 없다는 것은 신중한 설계 결정이며 iOS 내의 UIWebView 클래스에있는이 속성에서 유래합니다. https://developer.apple.com/library/ios/documentation/uikit/reference/UIWebView_Class/Reference/Reference.html#//apple_ref/occ/instp/UIWebView/keyboardDisplayRequiresUserAction 한 가지 흥미로운 점은 홈 화면에 추가 된 웹 "앱"이 기본적으로이 제한을 우회 할 수 있다는 것입니다.

버튼 클릭 (사용자가 시작한 실제 탭 이벤트) 이벤트가 발생하면 .focus(); 이벤트를 호출 할 수 있습니다. 예를 들어 프로그래밍 방식으로 클릭 핸들러를 호출하는 경우에도 마찬가지입니다. 키를 누르는 것과 같은 키보드 이벤트 처리기 내에서, iOS는 필드를 집중 시키지만 키보드는 닫습니다.

나는 문제를 연구하는 동안 여기에 몇 가지 테스트 실험 작업을 하였다 아니라 키 누르기 이벤트로, http://codepen.io/anon/pen/FLpJD

그리고 버튼을 볼 수있는 모든 경우에 는 iOS 기기에 두 번째 필드에 초점을 맞출 수 있습니다을 내가 시도한 모든 변형과 함께.

적어도 당분간은 해결할 수없는 것 같습니다. 애플이 클릭 이벤트를 완화시키는 것과 같은 방식으로 주요 보도 이벤트를 완화한다면 이상적 일 것이다.

관련 문제