Chr*_*and 12 cocoa-touch objective-c ios uitextfielddelegate
我有一个UITextField,当文本输入时,我想从文本字段中获取doubleValue并执行一些计算并在UITableView中显示它们.
UITextField的委托采用UITextFieldDelegate协议,并实现textFieldShouldReturn:和textFieldDidEndEditing:方法.textFieldShouldReturn:取消第一个响应者状态,根据文档也应该触发textFieldDidEndEditing:,但我从未看到textFieldDidEndEditing:调用.
- (BOOL)textFieldShouldReturn:(UITextField*)theTextField {
if (theTextField == thresholdValue) {
[thresholdValue resignFirstResponder];
}
return YES;
}
- (void)textFieldDidEndEditing:(UITextField *)textField {
[self updateThresholdValue:textField];
}
Run Code Online (Sandbox Code Playgroud)
值得注意的是,我还尝试将一些文本字段事件连接到委托并直接调用事件updateThresholdValue:但这也不起作用.
刚遇到你描述的同样问题.在尝试了我能想到的一切后,我添加了这个委托方法:
// if we encounter a newline character return
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
// enter closes the keyboard
if ([string isEqualToString:@"\n"])
{
[textField resignFirstResponder];
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
现在,textFieldShouldEndEditing将触发,文本字段将重新响应第一个响应者.
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
textFieldDidEndEditing在文本字段重新设置其第一个响应者状态时触发,而在按下返回按钮时触发textFieldShouldReturn.
这听起来像你的文本字段是永远不会辞去firstResponder.您可以通过放置一些调试输出(如评论中所建议的那样)轻松地检查它,并且只需触摸即可导出文本字段 - 例如,开始键入然后只需触摸字段外部以强制它退出firstResponder.
不确定这是否有帮助,但听起来像是一个奇怪的案例.
正如其中一条评论中提到的,我尝试使用 HelloWorld 应用程序复制一个更简单的版本,并且第一次尝试就成功了,没有任何问题,正如预期的那样。面对这一点,我开始有些疑惑。
在我试图找到这个问题的答案的所有谷歌搜索中,我遇到了一个链接,其中一个人遇到了事件未从按钮触发的问题,结果证明该问题与中的视图有关按钮被放置在其中,并且该视图有另一个子视图作为按钮的对等点,并且该子视图以某种方式吃掉了事件,而不是允许它们去往它们被引导的地方。这个场景与我的并不完全相同,但听起来足够接近,值得进行调查。尽管这里收到了很多极好的建议,但还没有取得成果。
昨晚,我决定从头开始完全重新创建 nib 文件(复制了我之前拥有的文件),然后我就让它开始工作了。TableViewController关键的区别似乎是,在原始的非工作 nib 文件中,我从调色板中拖动了 a ,然后将其类型更改为我的子类PZTableViewController。当我在新笔尖上做同样的事情时,事件没有触发。另一方面,如果我删除了拖拽TableViewController,而只是拖拽了一个NSObject并将其类更改为PZTableViewController并将所有内容都连接起来,那么一切都“正常工作”。
我将尝试追踪让我开始这一思路的链接,并将其作为编辑或评论发布。
这也不是一个完整的答案,因为我还不明白调色板TableViewController和我的子类之间的区别。当我弄清楚这一点时,我将通过编辑或评论来更新这个答案。
| 归档时间: |
|
| 查看次数: |
28186 次 |
| 最近记录: |