19

iOS6GMを搭載したiPadの場合。6つのUITextFields、3つのUITextViews、およびポップオーバー/アクションシートをトリガーするUIButtonがあります。

UITextFieldsまたはUITextViewsのいずれかを選択すると、キーボードがポップアップしてカーソルが表示されますが、テキストを入力できません。UIButtonを押してポップオーバーを表示し、その外側をタップしてポップオーバーを閉じ、UITextFieldsまたはUITextViewsに戻ると、機能します。

UITextxxxx.delegate=self;があります。それらすべてのために設定します。.hファイルのxibs、UITextFieldDelegate、UITextViewDelegateで「有効」と「ユーザーインタラクションが有効」がオフになっているほか、次の項目もあります。

- (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}


- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    
    return YES;
    
}

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
    
    return YES;
    
}

- (IBAction)textFieldReturn:(id)sender {
    
    [sender resignFirstResponder];
}



- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
    
    if (textView == notestextView){
        [notestextView becomeFirstResponder];
    }
    if (textView == notestextViewTwo){
        [notestextViewTwo becomeFirstResponder];
    }
    if (textView == notestextViewThree){
        [notestextViewThree becomeFirstResponder];
    }
    
    return YES;
    
}

- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
    
    return YES;
    
}

[xxxxxxxbecomeFirstResponder]も試しました。viewDidLoadで。これにより、実行時にキーボードがポップされ、フィールドにカーソルが置かれますが、UIButtonをタップしてポップオーバーを表示するまで、キーボードを入力できません。

なぜ私がフィールドに入力できないのか、そしてなぜポップオーバーを呼び出すと「それを修正する」のか誰もが知っていますか?

更新9/18:テキストフィールドとテキストビューを含むビューを持つ新しいビューをアプリにプッシュしました。委任者はすべて設定されています。同じ動作。キーボードとカーソルが表示されますが、入力は行われません。それは、ポップオーバーコントローラーが物事を台無しにすることを除外します。

私はこれがiOS6のバグだと強く思い始めています。これは、iOS 4および5のiPhoneバージョンのアプリで見たものとほぼ同じで、問題は発生しませんでした。iPhoneとiPadのバージョンの唯一の違いは、イメージピッカーの表示方法です。iPadにはポップオーバーを使用する必要があります。だから私はポップオーバーの代表がそれと関係があると思っていました。

iOS 6でUITextFieldsとUITextViewsを実装することの間に、私が知らない基本的な違いはありますか?ありそうもないようです。

それが私のアプリがこのように流れるのを助けるなら:

10個のボタンを備えたメインビュー

  • 各ボタンは、ナビゲーションコントローラーを介してテーブルビューを押します
  • テーブルビューは詳細ビューをプッシュします-テキストフィールドとテキストビューは上記の動作を示します
  • tableviewには、モーダルビューを押して新しいアイテムを追加する追加ボタンもあります。テキストフィールドとテキストビューは、上記の動作を示します。
4

7 に答える 7

38

これは元々iOS5で構築されたiPhoneアプリでした。iPadアプリにするために、プロジェクトを複製して、すべて.xibsをiPadバージョンにアップグレードしました。それがバグなのか、それともiOS 6へのアップグレードと関係があるのか​​はわかりませんが、そのようにすると、何かが台無しになりMainWindow.xibます。

MainWindow xibで"MainViewController"、タイトルを入力しました(以前は空白でした)。

ここに画像の説明を入力してください

そしてチェックオフ"Visible at Launch"。起動時にすでに表示されていますが、チェックを外していないと何かが台無しになります。

ここに画像の説明を入力してください

これで、すべてのテキストビューとテキストフィールドが機能します。

于 2012-09-20T00:16:19.950 に答える
13

これと同じ問題が発生しました。アプリのデリゲートにが含まれていることを確認して[self.window makeKeyAndVisible]ください。それは私にとってそれを解決しました。

于 2012-09-19T14:41:46.880 に答える
2

私にとってあなたの解決策はうまくいかないので、私は別のものを見つけました。

私はRevmobAdsを使用しているので、アプリの起動時にフルスクリーンビューとバナービューが読み込まれます。Revmobは、すべてのビューコントローラで同じバナーを表示するために一部のスタッフを使用しています。これが問題だと思います。revmobを無効にすると、テキストフィールドにテキストを追加できます。

于 2012-09-24T04:57:55.340 に答える
2

これは明らかにiOS6のバグです。メソッドに入れるだけです[searchBar becomeFirstResponder];searchBarTextDidBeginEditing

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    if (!self.window.isKeyWindow) {
        [self.window makeKeyAndVisible];
    }
}

この解決策は私のために働きます。

于 2013-01-04T10:08:21.860 に答える
0

これらのソリューションは私には機能しませんでしたが、で派生データフォルダーを削除した後~/Library/Developer/Xcode/DerivedData/AppName、機能しました。

于 2013-08-22T10:44:26.870 に答える
0

他の答えを明確にするために、キーウィンドウとして設定されていないウィンドウにテキストを入力することはできません。ほとんどのアプリケーションは1つのウィンドウのみを使用するか、追加のウィンドウにテキスト入力がないため、この問題が発生することはありません。

複数のウィンドウを処理する場合は、フォーカスを切り替えるときにresignKeyWindow+を確認しmakeKeyWindow、非常に重要なこととして、後でキーウィンドウを復元してください。

于 2014-10-23T01:33:35.297 に答える
0

でbecomeFirstResponderを試してくださいdispatch_async(dispatch_get_main_queue(),^{});

于 2016-07-13T03:11:30.377 に答える