2017-11-02 14 views
0

이것은 매우 이상합니다 - 어떤 이유로 인해 UIView이 (한번은 UITextView을 탭하면), UITapGesture이 실행되지 않습니까? 예 : 보기가 애니메이션으로 표시되고 UITextView이 활성 상태이면보기의 아무 곳이나 두드리면 애니메이션보기가 닫히지 않습니까? 그러나 그것이 애니메이트되기 전에 뷰의 아무 곳이나 탭하면, UITapGesture은 잘 실행됩니다. 왜 이럴까요?UIView가 애니메이션 처리 된 후에 Obj-C - UITapGestureRecognizer가 작동하지 않습니까?

ViewController.m 일단

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

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self 
                      action:@selector(dismissKeyboard)]; 
    [self.view addGestureRecognizer:tap]; 

} 

-(void)dismissKeyboard { 

    [self animateTextView:NO]; 

} 



- (void)textViewDidBeginEditing:(UITextView *)textView 
{ 

    [self animateTextView: YES]; 

} 


- (void)textViewDidEndEditing:(UITextView *)textView 
{ 
    [self animateTextView:NO]; 


} 


- (void) animateTextView:(BOOL) up 
{ 
    const int movementDistance = 206; // tweak as needed 
    const float movementDuration = 0.3f; // tweak as needed 
    int movement= movement = (up ? -movementDistance : movementDistance); 
    NSLog(@"%d",movement); 

    [UIView beginAnimations: @"anim" context: nil]; 
    [UIView setAnimationBeginsFromCurrentState: YES]; 
    [UIView setAnimationDuration: movementDuration]; 
    self.view.frame = CGRectOffset(self.inputView.frame, 0, movement); 
    [UIView commitAnimations]; 


} 
+0

난 당신이 링크를 살펴한다고 생각 https://stackoverflow.com/questions/1126726/how- to-make-a-uitextfield-move-up-when-keyboard-is-present – trungduc

+0

광산은 UITextField가 아니라 UITextView입니다 ... 작동이 다르게 @trungduc – Brittany

+0

죄송합니다, 형편 없음. 하지만 그들은 UiView이고 UIView 애니메이션을 사용하고 있다고 생각합니다. 어쩌면 작동 할 수도 있습니다. – trungduc

답변

0

같은 시도,

- (void) animateTextView:(BOOL) up 
{ 

    UIViewAnimationOptions options = UIViewAnimationOptionAllowUserInteraction; 

    const int movementDistance = 206; // tweak as needed 
    const float movementDuration = 0.3f; // tweak as needed 
    int movement= movement = (up ? -movementDistance : movementDistance); 

    [UIView animateWithDuration:movementDuration 
          delay:0.0 
         options:options 
         animations:^{ 
             self.view.frame = CGRectOffset(self.inputView.frame, 0, movement); 

            } 
         completion:nil]; 
} 
+0

다시 생생하지만 탭에서보기를 닫을 수 없습니다. 텍스트 필드를 제외한 모든 것이 고정되어있는 것 같습니다. – Brittany