0

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 で動作します)。

ありがとう

セザール・ワーゲンハイマー

4

1 に答える 1