Ios 新屏幕上的UITextField将不接受输入
我正在Xcode中修改现有的iPad应用程序。该应用程序非常简单,由4个屏幕组成,用于收集信息并将其发送到web服务 我正在尝试添加一个包含四个文本字段的附加屏幕。所有文本字段都不接受任何输入。我已经查看了视图层次结构,并确认所有视图都启用了用户交互,没有一个视图配置为多点触控 我已将UITextFieldDelegate添加到视图控制器,并已将UITextField委派连接到视图控制器 我在textFieldShouldBeginEditing中添加了一个NSLog,每次我触摸该字段时,它都会显示在控制台中。但它不显示光标,也不显示键盘 就因为我认为我可能会失去理智,我用一个空白的视图控制器替换了整个屏幕,只有一个文本字段,它仍然不接受任何输入 此外,为了确保我没有失去对现实的把握,我创建了一个新项目,由一个视图和一个文本字段组成,它确实如预期的那样工作 我真的不知道该怎么办。我的应用程序中其他屏幕上的所有文本字段都工作正常。这只是为了我的生活,我不能让新屏幕上的文本字段工作 救命 标记Ios 新屏幕上的UITextField将不接受输入,ios,objective-c,uitextfield,uitextfielddelegate,Ios,Objective C,Uitextfield,Uitextfielddelegate,我正在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