Objective c 以编程方式取消带有委托的文本字段键盘

Objective c 以编程方式取消带有委托的文本字段键盘,objective-c,uiviewcontroller,uitextfield,Objective C,Uiviewcontroller,Uitextfield,我有一个具有以下功能的viewController: @接口RootViewController:UIViewController{ 然后,我在viewController.m中以编程方式添加了一个文本字段,如下所示: UITextField*textFieldRounded=[[UITextField alloc] initWithFrame:frame]; textFieldRounded.delegate = self; 在相同的.m中,我尝试了所有这些: - (void)textFie

我有一个具有以下功能的viewController:

@接口RootViewController:UIViewController{

然后,我在viewController.m中以编程方式添加了一个文本字段,如下所示:

UITextField*textFieldRounded=[[UITextField alloc] initWithFrame:frame];
textFieldRounded.delegate = self;
在相同的
.m
中,我尝试了所有这些:

- (void)textFieldDidEndEditing:(UITextField *)textField{
    [textField resignFirstResponder];
NSLog(@"returned?");
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder]; 
NSLog(@"returned?");
 return YES;
}

-(BOOL)textFieldShouldEndEditing:(UITextField *)textField{
    [textField resignFirstResponder];
NSLog(@"returned?");
    return YES;

}

当我单击viewController子视图中的文本字段时,键盘显示良好。但按“完成”按钮没有任何作用。
NSLog
语句从未出现,因此这些方法从未被调用。有什么想法吗?

我可能只是刚刚提出了这个问题,但我所做的是将一个点击手势识别器对象附加到视图中,创建了一个名为clear keyboard:的实例方法,并在函数中放入[WhateVeridithatOpenedTheKeyboard resignFirstResponder];就是这样。也许你问了一些完全不同的问题,但我想我会尽力帮你:)

将.h文件中的UITextField声明为带有属性的IBOutlet,并在.m文件中合成它。

使用此委托方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; 

将此委托方法添加到您的代码中,然后再次运行您的应用程序。

即使没有界面生成器,也要使用IBOutlet?是的,如果没有界面生成器,您应该这样做。检查此链接IBOutlet是无意义的。如果您没有使用IB,它只是一个标志,以便IB可以选择它可以映射到的属性,但使用属性可能是一个解决方案t谢谢,我也在其他地方看过你的推荐。值得一试。@andrewx你看过我的推荐吗?我的意思是我看过你在这里提到的其他地方推荐的技术,但不太可能是你推荐的。