Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 新屏幕上的UITextField将不接受输入_Ios_Objective C_Uitextfield_Uitextfielddelegate - Fatal编程技术网

Ios 新屏幕上的UITextField将不接受输入

Ios 新屏幕上的UITextField将不接受输入,ios,objective-c,uitextfield,uitextfielddelegate,Ios,Objective C,Uitextfield,Uitextfielddelegate,我正在Xcode中修改现有的iPad应用程序。该应用程序非常简单,由4个屏幕组成,用于收集信息并将其发送到web服务 我正在尝试添加一个包含四个文本字段的附加屏幕。所有文本字段都不接受任何输入。我已经查看了视图层次结构,并确认所有视图都启用了用户交互,没有一个视图配置为多点触控 我已将UITextFieldDelegate添加到视图控制器,并已将UITextField委派连接到视图控制器 我在textFieldShouldBeginEditing中添加了一个NSLog,每次我触摸该字段时,它都会

我正在Xcode中修改现有的iPad应用程序。该应用程序非常简单,由4个屏幕组成,用于收集信息并将其发送到web服务

我正在尝试添加一个包含四个文本字段的附加屏幕。所有文本字段都不接受任何输入。我已经查看了视图层次结构,并确认所有视图都启用了用户交互,没有一个视图配置为多点触控

我已将UITextFieldDelegate添加到视图控制器,并已将UITextField委派连接到视图控制器

我在textFieldShouldBeginEditing中添加了一个NSLog,每次我触摸该字段时,它都会显示在控制台中。但它不显示光标,也不显示键盘

就因为我认为我可能会失去理智,我用一个空白的视图控制器替换了整个屏幕,只有一个文本字段,它仍然不接受任何输入

此外,为了确保我没有失去对现实的把握,我创建了一个新项目,由一个视图和一个文本字段组成,它确实如预期的那样工作

我真的不知道该怎么办。我的应用程序中其他屏幕上的所有文本字段都工作正常。这只是为了我的生活,我不能让新屏幕上的文本字段工作

救命

标记


您可以尝试手动将
textfield.delegate=self
添加到
viewDidLoad
viewwillbeen
方法中。。
希望这能有所帮助。

您可以尝试手动将
textfield.delegate=self
添加到
viewdiload
viewwillbeen
方法中。。
希望这能有所帮助。

我最终从头开始创建了一个新项目,首先列出了我所有的屏幕和UITextFields,然后将所有内容连接到代码,并首先对其进行测试。然后我回去添加了其余的图形元素


我不知道是什么导致了最初的问题。我会把它当作一个Xcode bug来写。

我最终从头开始创建了一个新项目,首先列出了我所有的屏幕和UITextFields,然后将所有内容连接到代码中并进行了测试。然后我回去添加了其余的图形元素


我不知道是什么导致了最初的问题。我会把它当作Xcode bug来写。

您是否直接在设备和其他版本的模拟器上进行了测试?在
textField内部应该开始编辑
,尝试添加以下行:
[textField becomeFirstResponder]我添加了[textField becomeFirstResponder];在文本字段中,应开始编辑。现在我在[UIViewController loadViewIfRequired]中发现EXC_BAD_访问错误;是的,@alexandresoli,我在我的iPad上做了测试。同样的问题。这是一个非常奇怪的问题。我的想法是,您没有正确地显示新视图,因此不允许用户正确地与文本字段交互。这也解释了为什么你可以让它与一个新的应用程序一起工作,而不是在修改旧的应用程序时。我不认为这与您的textfield有关,而是与用户与textfield交互的能力有关。您是否直接在设备和其他版本的模拟器上进行了测试?在
textfield内部,应开始编辑
,尝试添加以下行:
[textfield becomeFirstResponder]我添加了[textField becomeFirstResponder];在文本字段中,应开始编辑。现在我在[UIViewController loadViewIfRequired]中发现EXC_BAD_访问错误;是的,@alexandresoli,我在我的iPad上做了测试。同样的问题。这是一个非常奇怪的问题。我的想法是,您没有正确地显示新视图,因此不允许用户正确地与文本字段交互。这也解释了为什么你可以让它与一个新的应用程序一起工作,而不是在修改旧的应用程序时。我不认为这与您的textfield有关,而是用户与textfield交互的能力。我在Interface Builder中分配了代理。我知道代理工作正常,因为每次单击UITextField时,我在TextFieldShouldBeginEdit中输入的NSLog消息都会显示在控制台上。我在Interface Builder中分配了代理。我知道代理工作正常,因为每次单击UITextField时,我在TextFieldShouldBeginEdit中输入的NSLog消息都会显示在控制台上。Upvoting,因为我在一个共享扩展中遇到了同样的问题,通过执行
Product>Clean
Product>Clean Build Folder…
并重新启动Xcode解决了这个问题。这甚至可能“只是”一个模拟器问题,因为后来我在包含该问题的应用程序中也出现了这个问题,只需重新启动模拟器就可以了。升级投票,因为我在共享扩展中遇到了相同的问题,通过执行
Product>Clean
Product>Clean Build Folder…
并重新启动Xcode>得到解决。这甚至可能是“仅仅”一个模拟器问题,因为后来我在包含这个问题的应用程序中也有了这个问题,只需重新启动模拟器就可以了。
//
//  TestViewController.h
//

#import <UIKit/UIKit.h>

@interface TestViewController : UIViewController <UITextFieldDelegate>

@end
//
//  TestViewController.m
//

#import "TestViewController.h"

@interface TestViewController ()

@end

@implementation TestViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
    NSLog(@"textFieldShouldBeginEditing");
    return YES;
}

-(BOOL)textFieldShouldEndEditing:(UITextField *)textField{
    NSLog(@"textFieldShouldEndEditing");
    return YES;
}

-(BOOL)textFieldShouldReturn:(UITextField*)textField{
    NSLog(@"textFieldShouldEndEditing");
    return YES;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end