【问题标题】:Xcode UITextField textFieldDidEndEditing crashingXcode UITextField textFieldDidEndEditing 崩溃
【发布时间】:2015-07-28 16:04:57
【问题描述】:

在我的应用程序中,当 TextField 失去焦点时,我正在检查以下值。

- (void)textFieldDidEndEditing:(UITextField *)textField {
if (textField.tag==1){
    [self CheckUser:textField.text];
} else if (textField.tag==2){
    [self CheckEmail:textField.text];
} else {

}

}

工作正常,没问题。

但是当我关闭 Modal 表单并移动到 ViewController 时,它崩溃了。我正在使用下面的代码来关闭模态视图控制器。

[self dismissModalViewControllerAnimated:YES];

如果我删除代码 - (void)textFieldDidEndEditing:(UITextField *)textField 它可以正常工作而不会崩溃。

谁能帮帮我。

【问题讨论】:

  • 崩溃时的错误信息是什么?
  • 它没有给出任何错误消息只是转到这里 #import #import "AppDelegate.h" int main(int argc, char * argv[]) { @autoreleasepool {返回 UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } }
  • 您没有提供太多信息,它可能会崩溃,因为当您关闭视图控制器时键盘存在。添加这个:[textField resingToFirstResponder];在你的方法结束时(textFielddidEnd... 和调用dismissViewController.
  • 无论如何dismissModal已被弃用。使用dismissViewController

标签: ios objective-c xcode


【解决方案1】:

确保您在文本字段的头文件中设置 UITextField 委托:

@interface ViewController : UIViewController <UITextFieldDelegate>

然后,释放文本字段的isfirstResponder 属性。以下面的代码为例。

#pragma mark - UITextField Delegate Methods

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    NSLog(@"Search for tag: %@", self.searchField.text);

    if (textField == self.textField1)
    {
        [self.searchField1 resignFirstResponder];

        NSLog(@"TextField1: %@", self.textField1.text);
    } 
    else if (textField == self.textField2)
    {
        [self.searchField2 resignFirstResponder];

        NSLog(@"TextField2: %@", self.textField2.text);
    }

    return YES;
}

编辑

此外,如果您的视图层次结构嵌入在 UINavigation 控制器中,请关闭显示的模态视图:

// Apple's Description: Dismisses the view controller that was presented modally by the receiver.
[self dismissViewControllerAnimated:YES completion:nil];

这将删除最顶层的视图控制器。 ^^^ 编辑 ^^^

最后一件事,如果仍然无法正常工作,请设置对 TextField IBOutlets 的强引用,并在 viewDidLoad 中设置它们的每个 .delegate 属性。

【讨论】:

  • 我有这样的界面 @interface SignupViewController : UIViewController
  • 您是否已将 Interface Builder 中的文本字段附加到相应的 View Controller 的 .h 文件中?
  • 这个方法也崩溃了:(
  • 检查我的编辑。您可能想在新项目上测试代码。看起来您的视图控制器内部发生了很多事情,并且在尝试在新/空项目中重新创建问题时通常更容易解决问题
  • 好的,我会在新项目中尝试一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多