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;
    }

すべてのtextFieldを委任する方法がわかりませんか?このtextFieldReturnをすべてのtextFieldsで機能させるにはどうすればよいですか..他のすべてがうまく機能するため、viewDidLoad領域が問題になる必要があります...

4

3 に答える 3

1

ヘッダーファイルでUITextViewDelegateをUITextFieldDelegateに切り替えます。これでうまくいくはずです。それでも問題が解決しない場合はお知らせください。

于 2012-12-18T05:04:21.513 に答える
1

textField.hファイルで、の代わりにのデリゲートを設定します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

テキストフィールドにタグを付けて、デリゲートメソッド内でそれらを区別します。区別したくない場合は、delegateメソッドで取得した参照を使用してください。

タグを使用する場合は、スイッチを使用できます。

 switch(sender.tag)
{

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