0

.h 文件

#import <UIKit/UIKit.h>

        @interface AddEventViewController : UIViewController <UITextFieldDelegate>

        @end 

.m 文件

@property (weak, nonatomic) IBOutlet UITextField *textField1;
    @property (weak, nonatomic) IBOutlet UITextField *textField2;
    @property (weak, nonatomic) IBOutlet UITextField *textField3;
    - (IBAction)textFieldReturn:(id)sender;

    @end

    @implementation AddEventViewController

    @synthesize textField1, textField2, textField3;

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
            // Custom initialization
        }
        return self;
    }

    - (IBAction)textFieldReturn:(id)sender;
    {
        [sender resignFirstResponder];
    }

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        self.textField1.delegate = self;
        textField1.delegate = self;


        // Do any additional setup after loading the view.
    }

    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }

    - (void)touchesBegan: (NSSet *) touches withEvent: (UIEvent *)event
    {
        if (textField1)
        {
            if ([textField1 canResignFirstResponder]) [textField1 resignFirstResponder];
        }
        [super touchesBegan: touches withEvent: event];

        if (textField2)
        {
            if ([textField2 canResignFirstResponder]) [textField2 resignFirstResponder];
        }
        [super touchesBegan: touches withEvent: event];

        if (textField3)
        {
            if ([textField3 canResignFirstResponder]) [textField3 resignFirstResponder];
        }
        [super touchesBegan: touches withEvent: event];
    }


    - (BOOL)textFieldShouldReturn:(UITextField *)textField
    {
        [textField1 resignFirstResponder];
        return NO;

        [textField2 resignFirstResponder];
        return NO;

        [textField3 resignFirstResponder];
        return NO;
    }

    @end

Ok so im getting the yellow bug symbol on the lines:

    - (void)viewDidLoad
    {
      [super viewDidLoad];
        self.textField1.delegate = self;
        textField1.delegate = self;
    }

我不知道如何委派我所有的文本字段?我如何使这个 textFieldReturn 对我所有的 textFields 都有效。viewDidLoad 区域必须是问题所在,因为其他一切都很好...

4

3 回答 3

1

在头文件中将 UITextViewDelegate 切换为 UITextFieldDelegate。这应该这样做。如果您还有问题,请告诉我。

于 2012-12-18T05:04:21.513 回答
1

在 .h 文件中设置委托textField而不是textView. .m 文件中的 & 替换textFieldShouldReturn方法的以下代码

 - (BOOL)textFieldShouldReturn:(UITextField *)textField
 {
     if (textField == textField1)
     {
         [textField1 resignFirstResponder];
     }
     else if (textField == textField2)
     {
         [textField2 resignFirstResponder];
     }
     else if (textField == textField3)
     {
         [textField3 resignFirstResponder];
     }
     return YES;
}

对于 textView 使用以下代码。

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

    return YES;
}
于 2012-12-18T05:09:59.440 回答
1

标记您的文本字段以在委托方法中区分它们。如果您不想区分,那么只需使用您在委托方法中获得的引用。

如果你使用标签,你可以使用 switch。

 switch(sender.tag)
{

  case <case value>
  //your code
  break;
}
于 2012-12-18T05:54:16.870 回答