- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在处理具有多个 UITextField
对象的 View 。我的 View Controller 用作 UITextFieldDelegate
,我已经实现了 (BOOL)textFieldShouldEndEditing:(UITextField *)textField
方法来保存和验证正在显示的记录。
如果用户在编辑项目后单击“完成”按钮并且保存/验证失败,则会显示 UIAlertView
并且用户会停留在 UITextField
验证失败。
我的问题是——当用户点击 UITextField
时,将无法保存/验证到另一个 UITextField
,然后 (BOOL )textFieldShouldEndEditing:(UITextField *)textField
方法被多次调用,多次弹出UIAlertView
为什么 (BOOL)textFieldShouldEndEditing:(UITextField *)textField
在用户单击键盘上的“完成”时调用一次,但在用户单击另一个 UITextField< 时调用多次
?
这是我的代码:
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
NSLog(@"textFieldShouldEndEditing called by textField with text=%@", textField.text);
currentItem.nameOrNumber = nameOrNumber.text;
// Try to save the managed object.
NSError *error = nil;
if (![[currentItem managedObjectContext] save:&error]) {
UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Uh Oh!",@"")
message:[error localizedDescription]
delegate:self
cancelButtonTitle:NSLocalizedString(@"OK",@"")
otherButtonTitles:nil];
[errorAlert show];
[errorAlert release];
shouldEnd = NO;
}
return shouldEnd;
}
最佳答案
我认为您的问题出在编辑文本字段并直接点击另一个文本字段时调用文本字段方法的顺序。
如果我没记错的话,应该是这样的(你在A上编辑然后点击B)
textFieldShouldBeginEditing
字段 BtextFieldShouldEndEditing
字段 AtextFieldDidEndEditing
字段 AtextFieldDidBeginEditing
字段 B所以当你在 textFieldShouldEndEditing
方法中时,文本字段 B 已经成为第一响应者。因此,当您使 UIAlertView 出现时,B 会失去焦点,因此也会调用 textFieldShouldEndEditing
!
当我想在 textField 开始编辑时提升 View 时,这对我来说也是个问题。我找到的解决方案是创建一个 bool 类变量,指示我当前是否正在从一个文本字段切换到另一个文本字段。我在 textFieldShouldBeginEditing
中将其设置为 TRUE
,在 textFieldDidBeginEditing
中将其设置为 FALSE
。当您在 textFieldShouldEndEditing
中时,如果它设置为 TRUE
,则意味着用户直接点击了另一个文本字段。然后你只需要找到正确的方法来只进行一次测试(也许 shouldEndEditing 应该返回 false 或其他东西)。
关于ios - 多次调用 textFieldShouldEndEditing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3121440/
我有一个包含多个字段的详细 View ,其中一些字段使用 textFieldShouldEndEditing 进行一些验证。这一切都运作良好。但是,如果用户在字段中输入无效数据,然后按下取消按钮,验证
我实现了这个方法,当在文本字段中输入了未经授权的字符或已使用的用户名时,向用户发送多个警报 View : func textFieldShouldEndEditing(textField: UITex
我正在处理具有多个 UITextField 对象的 View 。我的 View Controller 用作 UITextFieldDelegate,我已经实现了 (BOOL)textFieldShou
我正在使用自定义单元格,我的客户中有一个textField单元格。 当我完成编辑textfeild时,它是委托(delegate)方法textFieldShouldEndEditing 被调用并正在重
textFieldShouldendEditing 和 textfieldDidEndEditing 有什么区别,什么时候应该使用每种方法? 最佳答案 textFieldShouldEndEditin
我有一个名为 LoginViewController 的 View Controller ,它符合 UITextFieldDelegate 并且有两个文本字段对象,即 Email 和 Password
我是一名优秀的程序员,十分优秀!