【发布时间】:2017-10-22 04:55:34
【问题描述】:
当我的用户点击我的 UITextView(不是 uitextfield...)时,会出现动画。然而,在 UITextView 开始编辑后,似乎没有其他 UITapGesture 被识别(例如,如果我向我的 UIView 添加一个 tapGesture 来关闭这个动画,它根本不会执行)。我一直在努力解决这个问题,因为我感觉就像永远一样。感谢您的帮助,我很难过。
ViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.replyField.delegate = self;
[self.replyField setUserInteractionEnabled:YES];
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(textViewTapped)];
[self.view addGestureRecognizer:gestureRecognizer];
}
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
-(void)textViewTapped {
NSLog(@"DISMISS PLEASE!");
[self animateTextView:NO];
}
- (void)textViewDidBeginEditing:(UITextView *)textView
{
[self animateTextView: YES];
self.replyField.gestureRecognizers = nil;
}
- (void)textViewDidEndEditing:(UITextView *)textView
{
[self animateTextView:NO];
}
- (void) animateTextView:(BOOL) up
{
const int movementDistance = 206;
const float movementDuration = 0.3f;
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];
}
- (void)textViewDidChange:(UITextView *)textView
{
}
【问题讨论】:
-
尝试将
resignFirstResponder与endEditing:结合使用 -
@AlejandroIván 试过了,不行:(
-
[self.replyField resignFirstResponder]? -
您确定您正在触摸视图,因为手势已添加到视图中,并且 textView 没有填充视图边界?
-
@AlejandroIván 没有骰子。我实际上不能在我的 textView 之外点击任何其他按钮而不关闭它?这正常吗?
标签: ios objective-c uitextview uitapgesturerecognizer