0

TextField がクリックされたときにビューを移動したいのですが、textDidChangeテキストを変更したり何かを書いたりするときにのみ機能するので、TextField をクリックしたときにメソッドを呼び出す方法を教えてください。

 -(void)textFieldTextDidChange:(UITextField*)tf{

    [self  showAnimationPests];


}


    -(void) showAnimationPests{


      [UIView animateWithDuration:0.5 
                 animations:^{
                     self.view.frame = CGRectMake(0,-300,1024,768);
                 }];

     }

textchange の代わりに、テキストフィールドをクリックしたい

.h ファイル内

    IBOutlet UIButton*button1;
IBOutlet UIButton*button2;
IBOutlet UIButton*button3;
IBOutlet UIButton*button4;
IBOutlet UIButton*button5;
IBOutlet UIButton*button6;
IBOutlet UIButton*button7;
IBOutlet UIButton*button8;
IBOutlet UIButton*button9;
IBOutlet UIButton*button10;

    @property(nonatomic,retain)IBOutlet UIButton*button1;
    @property(nonatomic,retain)IBOutlet UIButton*button2;
    @property(nonatomic,retain)IBOutlet UIButton*button3;
    @property(nonatomic,retain)IBOutlet UIButton*button4;
    @property(nonatomic,retain)IBOutlet UIButton*button5;
    @property(nonatomic,retain)IBOutlet UIButton*button6;
    @property(nonatomic,retain)IBOutlet UIButton*button7;
    @property(nonatomic,retain)IBOutlet UIButton*button8;
    @property(nonatomic,retain)IBOutlet UIButton*button9;
    @property(nonatomic,retain)IBOutlet UIButton*button10;
4

4 に答える 4

2

使用する

- (void)textFieldDidBeginEditing:(UITextField *)textField

デリゲート メソッド。UITextFieldファーストレスポンダになったときに呼び出されます。テキストフィールドをクリックすると、このメソッドが呼び出されます。

于 2013-02-04T06:46:37.847 に答える
1

このコードを追加します:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(slideUpView:) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(slideDownView:) name:UIKeyboardWillHideNotification object:nil];

    -(void)slideDownView:(NSNotification*)notification
{

    [[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve];
    [[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration];
    [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] getValue:&keyboardFrame];

    [UIView animateWithDuration:animationDuration
                          delay:0.0
                        options:animationCurve
                     animations:^{
                         self.view.frame = CGRectMake(0, 0, 320, 480);
                     }
                     completion:^(BOOL finished){
                         NSLog(@"Slide down Done..!");
                     }];
}

-(void)slideUpView:(NSNotification*)notification
{

    [[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve];
    [[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration];
    [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] getValue:&keyboardFrame];
    //
    [UIView animateWithDuration:animationDuration
                          delay:0.0
                        options:animationCurve
                     animations:^{
                         self.view.frame = CGRectMake(0, -keyboardFrame.size.height + 70, 320, 416);
                     }
                     completion:^(BOOL finished){
                         NSLog(@"Slide up Done..!");
                     }];
}
于 2013-02-04T06:58:47.987 に答える
1

デリゲートメソッドを使用して行うことができます

- (void)textFieldDidBeginEditing:(UITextField *)textField
    {
        [self  showAnimationPests];
    }

または、テキストフィールドにタップガスチャーを追加します

- (void)viewDidLoad
    {
        [super viewDidLoad];

        UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap)];
        [singleTap setNumberOfTapsRequired:1];

        [tf addGestureRecognizer:singleTap];
    }

- (void)handleSingleTap
    {
        [self  showAnimationPests];
    }
于 2013-02-04T06:50:15.700 に答える
0

まず最初に、ファイルよりもファイルに追加<UITextFieldDelegate>します.h.m

- (void)viewDidLoad
{
 yourtextfield.delegate = self;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    if (textField == yourtextfield)
    {
       [self  showAnimationPests];
    }
}
-(void) showAnimationPests
{
 [UIView animateWithDuration:0.5 
             animations:^{
                 self.view.frame = CGRectMake(0,-300,1024,768);
             }];

 }
于 2013-02-04T06:55:49.073 に答える