ios - KeyboardWillShowNotification 调用两次 ios 9

标签 ios objective-c iphone uitextfield ios9

我正在使用 UIKeyboardWillShowNotification 来检测用户何时选择文本字段以及何时打开键盘。在 ios 8 和旧版本的 iOS 中它工作正常但今天我升级到 iOS 9 和 xCode 7。问题是在 iOS 现在选择每个文本字段后调用通知(而在 ios 8 中仅在选择第一个文本字段后调用) .

我对此进行了搜索,并找到了类似 Why is UIKeyboardWillShowNotification called every time another TextField is selected? 的帖子

但这与 iOS 9 无关(实际上在 iOS8 中一切都是正确的,通过升级我看到了问题)而且我也没有使用 inputAccessoryViews。

最佳答案

同样的问题。我的 View Controller 中有一些 UITexfield,当我使用 becomeFirstResponder 方法以编程方式为另一个文本字段留下一个文本字段时,再次调用 UIKeyboardWillShowNotification。即使键盘不再隐藏和显示。 但是,不会调用 UIKeyboardWillHideNotification

我不知道为什么这个问题会出现在 iOS9 中,但我可以给你一个解决方法。我做了什么:我在我的 View Controller 中创建了一个 BOOL 属性:

@property (assign, nonatomic) BOOL keyboardIsShown;

在我的键盘观察者方法中:

- (void)keyboardWillHideNotification:(NSNotification *)notification {

    self.keyboardIsShown = NO;   
    //rest of code
}


- (void)keyboardWillShowNotification:(NSNotification *)notification {

    if(self.keyboardIsShown) {
        return;
    }

    self.keyboardIsShown = YES;   
    //some code
}

如果有人有更清晰的解决方案来避免在 iOS9 中调用 becomeFirstResponder 时在另一个 UITextField 上多次调用 UIKeyboardWillShowNotification,我会采取它!

关于ios - KeyboardWillShowNotification 调用两次 ios 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32860151/

相关文章:

ios - 自动选择单元格 UITableView

ios - 应用程序更新需要考虑什么?

ios - 如何将 NSURLSessionConfiguration 配置到 NSObject 类中?

ios - 如何在 Objective C 中调整 UITableView 行高

ios - Objective-C snapchat 如何使图像/视频顶部的文本如此清晰而不是像素化?

ios - 内存管理,要弄清楚

objective-c - 在 objective-c 中反转名字和姓氏?

iphone - 对 <TSActivityMapVC : 0x81b1000> 的开始/结束外观转换的调用不平衡

iphone - iPhone SDK 3.0 中的 GameKit

ios - 超视觉 iPhone 应用程序,如 UIView 或 UITableView 滚动