以编程方式使用委托解除文本字段键盘

时间:2012-02-03 06:38:33

标签: objective-c uiviewcontroller uitextfield

我有一个viewController:

@interface RootViewController : UIViewController <UITextFieldDelegate>{

然后我在viewController.m中以编程方式添加了一个textfield:

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的子视图中的文本字段时,键盘显示正常。但按Done什么也没做。 NSLog语句永远不会出现,因此永远不会调用这些方法。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

我可能只是勉强有这个问题,但我所做的是将一个轻敲手势识别器对象附加到视图中,制作了一个名为clear keyboard的实例方法:,并在函数内部放置[whateverItIsThatOpenedTheKeyboard resignFirstResponder];就是这样。也许你会问一些完全不同的东西,但我想我会尽力帮助:)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用此委托方法

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

将此委托方法添加到您的代码中并再次运行您的应用程序..