iOS 6 でのみ発生する仮想キーボードに問題があります。
仮想キーボードからのキーボード入力をキャッチするために使用する UITextField がありますが、iOS 6 では一度だけ表示され、キーボードが初めて閉じられた後は表示されなくなります。
キーボードで TextField を表示するために使用するコードを次に示します。
if not Assigned( keysTextField ) Then
begin
keysTextFrame := wndHandle.frame;
keysTextField := zglCiOSTextField.alloc().initWithFrame(keysTextFrame );
keysTextTraits := keysTextField;
with keysTextField, keysTextTraits do
begin
setDelegate( appDelegate );
setAutocapitalizationType( UITextAutocapitalizationTypeNone );
setAutocorrectionType( UItextAutocorrectionTypeNo );
setKeyboardAppearance( UIKeyboardAppearanceDefault );
setReturnKeyType( UIReturnKeyDone );
setSecureTextEntry( FALSE );
addTarget_action_forControlEvents( appDelegate, objcselector('textFieldEditingChanged' ), UIControlEventEditingChanged );
end;
keysTextField.setText( utf8_GetNSString( Text ) );
wndHandle.addSubview( keysTextField );
end;
if appFlags and APP_USE_ENGLISH_INPUT > 0 Then
keysTextTraits.setKeyboardType( UIKeyboardTypeASCIICapable )
else
keysTextTraits.setKeyboardType( UIKeyboardTypeDefault );
wndHandle.addSubview( keysTextField );
keysTextField.becomeFirstResponder();
そして、これを却下するコードは次のとおりです。
if Assigned( keysTextField ) Then
keysTextField.removeFromSuperview();
この問題を解決するために私ができることを知っている人はいますか? 確認したところ、2 回目には keyTextField.isFirstResponder() が true を返すので、動作しているはずです (iOS < 6 で動作します)。
ありがとう
セザール・ワーゲンハイマー