为什么文本字段不会响应隐藏键盘?

时间:2012-03-09 23:35:15

标签: xcode resignfirstresponder

这是我的代码:

- (BOOL) textFieldShouldReturn:(UITextField *)textField  {
    [txtSiteDesc resignFirstResponder];
    [txtDesc resignFirstResponder];
    [ssFS resignFirstResponder];

    return YES;

}

这是.h文件:

#import <UIKit/UIKit.h>

@interface slEnterDataViewController : UITableViewController <UITextFieldDelegate>  {

    UITextField *txtSiteDesc;
    UITextField *txtDesc;
    UITextField *ssFS;
}

@property (nonatomic, retain) IBOutlet UITextField *txtSiteDesc;
@property (nonatomic, retain) IBOutlet UITextField *txtDesc;
@property (nonatomic, retain) IBOutlet UITextField *ssFS;

@end

它适用于txtSiteDesc,但不适用于任何其他。我假设问题出现在textFieldShouldReturn方法中;我想我可以检查“textField”的值来查看它是哪个字段,然后执行相应的“resignFirstResponder”并返回。我很接近(我认为),但还不够近。

非常感谢帮助。 :D

2 个答案:

答案 0 :(得分:0)

您是否可以为txtSiteDesc设置委托,但不能为其他两个文本字段设置委托?这可以解释为什么为您的第一个文本字段而不是其他字段调用textFieldShouldReturn:。确保将所有三个文本字段的delegate属性设置为self(其中self =您的视图控制器)。

答案 1 :(得分:0)

即使我遇到了这个问题。这就是你要找的东西:

- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if([string hasSuffix:@"\n"])
    {
        [theTextField resignFirstResponder];
        return NO;
    }
    return YES;
}

当您按下键盘上的return / done等时,这将隐藏键盘。