应用程序中的键盘无法消失

4
在我开发的应用程序中,我有3个UITextFields和一个UITextView。对于它们两者而言,我的键盘会出现,但我无法让它消失。我在Stack Overflow上查找了一些方法,但似乎无法正确实现它们。有人可以告诉我我下面的代码哪里出错了吗?
ViewController.h
@interface ViewController : UIViewController <UITextViewDelegate>

@property (strong, nonatomic) NSString *dna;
@property (weak, nonatomic) IBOutlet UITextField *dnaOut;
@property (weak, nonatomic) IBOutlet UITextField *mrnaOut;
@property (weak, nonatomic) IBOutlet UITextField *trnaOut;
@property (weak, nonatomic) IBOutlet UITextView *aminoOut;
- (IBAction)translateButton:(UIButton *)sender;
- (IBAction)clearButton:(UIButton *)sender;
@property (weak, nonatomic) IBOutlet UILabel *dnaError;
@property (weak, nonatomic) IBOutlet UILabel *mrnaError;
@property (weak, nonatomic) IBOutlet UILabel *trnaError;
@property (weak, nonatomic) IBOutlet UISegmentedControl *inputType;



@end

ViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    _aminoOut.delegate = self;


    -(BOOL) _aminoOut textFieldShouldReturn:(UITextField *)textfield {
        [textField resignFirstResponder];
        return YES;
    }


    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text
    {

        if ([text isEqualToString:@"\n"]) {

            [textView resignFirstResponder];
            // Return FALSE so that the final '\n' character doesn't get added
            return NO;
        }
        // For any other character return TRUE so that the text gets added to the view
        return YES;
    }

}

你是否设置了UITextFields的代理? - Kevin
2个回答

4
为什么所有代码都在你的viewDidLoad方法中?应该是这样的:

.h文件:

@interface ViewController : UIViewController <UITextViewDelegate, UITextFieldDelegate>

// Other stuff here...

.m文件:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    self.dnaOut.delegate = self;
    self.mrnaOut.delegate = self;
    self.trnaOut.delegate = self;
    self.aminoOut.delegate = self;

}

- (BOOL)textFieldShouldReturn:(UITextField *)textfield {
    [textField resignFirstResponder];
    return YES;
}

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if ([text isEqualToString:@"\n"]) {

        [textView resignFirstResponder];
        // Return FALSE so that the final '\n' character doesn't get added
        return NO;
    }
    // For any other character return TRUE so that the text gets added to the view
    return YES;
}

0

我认为您忘记将UITextField的代理连接到文件所有者。


1
在Interface Builder中右键单击您的UITextField,您会看到“delegate”和其右侧的一个圆圈,请将该圆圈拖动到文件所有者。 - ayon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接