iphone - 如何找出 UITextField 导致 UIKeyboardWillShowNotification 的原因?

标签 iphone keyboard uitextfield nsnotifications

我尝试在应用程序中使用自定义键盘,但在尝试将其限制为一个特定的 UITextField 时遇到问题。

我的代码基于 this Xcode project (最初发现于 this blog )。该代码将自定义 UIButton(代表“小数点”)添加到 UIKeyboardTypeNumberPad 键盘 View 中。它通过订阅 UIKeyboardWillShowNotification 并在键盘出现时修改键盘来实现此目的。

那个 Xcode 项目运行得很好,但是当我添加额外的 UITextField 时,自定义键也会被放入该文本字段的键盘中,即使我为该文本字段选择了完全不同的键盘类型。

我尝试注册以仅查看来自一个特定 UITextField 的 UIKeyboardWillShowNotification 通知,但这似乎不起作用:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:exampleViewController.textField];

我还尝试检查传递给keyboardWillShow的NSNotification内的对象,但不幸的是它指的是键盘,而不是导致键盘出现的UI控件。

2009-10-21 19:50:22.205 Example[6302:207] NSConcreteNotification 0x321ebd0 {name = UIKeyboardWillShowNotification; userInfo = {
UIKeyboardAnimationCurveUserInfoKey = 0;
UIKeyboardAnimationDurationUserInfoKey = 0.300000011920929;
UIKeyboardBoundsUserInfoKey = NSRect: {{0, 0}, {320, 216}};
UIKeyboardCenterBeginUserInfoKey = NSPoint: {160, 588};
UIKeyboardCenterEndUserInfoKey = NSPoint: {160, 372};

}}

我是否误解了 addObserver 接口(interface)?肯定有一种方法可以订阅来自特定 UI 控件的通知吗?

有人对如何实现这一目标有任何其他建议吗?

最佳答案

无法使上述任何一项工作。必须手动完成:

if ([companyName isFirstResponder]) {
    // ...............
}
else if ([notes isFirstResponder]) {
    //.............
    }
}

关于iphone - 如何找出 UITextField 导致 UIKeyboardWillShowNotification 的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1604327/

相关文章:

ios - 无法快速检查提交按钮的条件

c - 使用替代验证 key 的 fscanf()/vscanf() 函数系列的替代方案或如何创建自定义语言布局?

Java KeyListener 不起作用

ios - 从另一个类中的 UITextField 访问文本

ios - UITextField 中的奇怪崩溃

ios - 文本字段作为搜索栏

iphone - iOS HTTP 多部分形式流请求

IOS 双击单元格导致 UITableView 中的项目不会滚动

iphone - 如何更改 iOS 项目的名称?

ipad - 在 iPad (ios5) 上以编程方式移动或激活拆分键盘