10

私たちのアプリでは、ユーザーがテキスト ボックスに何かを入力し、戻るボタンを押してマスター画面に戻る状況があります。

これを iOS 7 で実行すると、キーボードは消えず、そこにとどまります。ユーザーは引き続きアプリ内を移動できますが、すべてのテキスト フィールドが無効になっているため、どこにもテキストを入力できません。ユーザーが持つ唯一のオプションは、アプリを強制終了して、最初からやり直すことです。

メッセージを追加しようとしましresignFirstResponderたが、何の役にも立ちませんでした。

多くのコードが関係しており、私たちはこの問題に積極的に取り組んでいます。その間、誰かがその問題を経験したことがありますか?そして、おそらくそれを解消する方法を見つけましたか?

4

7 に答える 7

0
[self.view endEditing:YES];

デバイス iOS9.x で動作しなくなった

viewWillDisappearメソッドでこれを行うこともできます

for (UIView *subview in self.view.subviews) {
        if ([subview canPerformAction:@selector(endEditing:) withSender:nil]) {
            [subview endEditing:YES];
        }
        if ([subview canResignFirstResponder]) {
            [subview resignFirstResponder];
        }
    }

これはレスポンダーをループし、レスポンダーのステータスを辞任します。

于 2016-02-10T11:32:31.200 に答える
0

ビュー コントローラーが を実装textFieldDidEndEditingしている場合、ビューが消えた場合に別のビューを最初のレスポンダーに設定しないようにしてください。 、またはtextFieldDidEndEditingを呼び出すと呼び出されます。resignFirstResponder[self.view endEditing:YES]

于 2015-08-31T22:59:36.950 に答える
0

MoreViewController私はUITabBarController( )でのみ同じ問題を抱えていましたiOS 8.3。たぶん、この解決策はあまり「いい」ものではなく、少し複雑ですが、うまくいくようです。あなたにも役立つことを願っています.

@interface ViewController ()

@property (nonatomic) BOOL needToHideKeyboard;
@property (nonatomic, strong) IBOutlet UITextField *txtField;
@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) name:UIKeyboardWillHideNotification object:nil];
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    self.needToHideKeyboard = NO;
}

- (void)viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];

    [self hideKeayboard];
}

- (void)hideKeayboard
{
    if (self.needToHideKeyboard) {
        [self.txtField resignFirstResponder];
    }
}

- (void)keyboardWasShown:(NSNotification *)notification
{
    self.needToHideKeyboard = YES;

    NSDictionary *info = [notification userInfo];
    CGSize keyboardSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

    // Shift scroll view content insets on the keyboard height
    UIEdgeInsets contentInsets = self.scrollView.contentInset;
    contentInsets.bottom = keyboardSize.height;
    self.scrollView.contentInset = contentInsets;
}

- (void)keyboardWillBeHidden:(NSNotification *)notification
{
    self.needToHideKeyboard = NO;

    // Reset keyboard content insets
    UIEdgeInsets contentInsets = self.scrollView.contentInset;
    contentInsets.bottom = [self.bottomLayoutGuide length];
    self.scrollView.contentInset = contentInsets;
}

@end
于 2015-04-17T08:58:14.107 に答える