2017-02-12 5 views
0

を働いていない別のクラスで作成されました。あなたが下にスワイプしたときに表示されるiPhoneの通知画面のように動作することになっている、とあなたはバックアップそれをスワイプすることができます。UISwipeGestureRecognizerは、私は別のクラスでのUIViewを作成し、私は私のViewControllerでそれをアニメーション化しようとしています

私は私のカスタムビューを下にスワイプして得ることができますが、私はそれをバックスワイプしようとすると、スワイプアップジェスチャーが開始されていません。

私は初心者です、ので、任意のヘルプは大歓迎です!

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

    NotificationView *notificationView = [[NotificationView alloc]init]; 
    [self.view addSubview:notificationView]; 



    UISwipeGestureRecognizer *swipeDownGestureRecognizer = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeDown:)]; 
    swipeDownGestureRecognizer.direction = UISwipeGestureRecognizerDirectionDown; 

    UISwipeGestureRecognizer *swipeUpGestureRecognizer = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeUp:)]; 
    swipeUpGestureRecognizer.direction = UISwipeGestureRecognizerDirectionUp; 

    [self.view addGestureRecognizer:swipeDownGestureRecognizer]; 
    [notificationView addGestureRecognizer:swipeUpGestureRecognizer]; 

} 

-(void) swipeUp: (UISwipeGestureRecognizer *) recognizer{ 

    UIView *notificationView = [[NotificationView alloc]init]; 
    notificationView = recognizer.view; 

    [UIView animateWithDuration:2.0 animations:^{ 
     notificationView.frame = CGRectMake(0, 0, 414, 723); 
    }]; 

} 

-(void) swipeDown: (UISwipeGestureRecognizer *) recognizer{ 

    UIView *notificationView = [[NotificationView alloc]init]; 
    notificationView = recognizer.view; 

    [UIView animateWithDuration:2.0 animations:^{ 
     notificationView.frame = CGRectMake(0, 723, 414, 723); 
    }]; 

} 

答えて

0

通知ビューでプロパティを作成し、その参照を保持し、新しいものを何度も作成しないでください。

@property (strong, nonatomic) NotificationView *notificationView; 

そして、あなたのviewDidLoad中:

 _notificationView = [[NotificationView alloc] init]; 

// Important line to solve your problems on gestures not fired off on your notification view 
_notificationView.userInteractionEnabled = YES; 

     [self.view addSubview:_notificationView]; 

と単に変更:

-(void)swipeDown:(UISwipeGestureRecognizer *)recognizer { 

    [UIView animateWithDuration:2.0 animations:^{ 
     _notificationView.frame = CGRectMake(0, 723, 414, 723); 
    }]; 

} 

あなたは性質がどのように機能するかについてのチュートリアルになっているはずです。 そして、あなたはlook into This Threadジェスチャー状態を処理することにより、複数回などと呼ば取得アニメーションを避けるためにすべきです。

0

viewDidLoadのnotificationViewは、viewControllersプロパティに割り当てる必要があります。ジェスチャ認識プログラムのアクションでinitビューを割り当てるべきではありません。

関連する問題