在UITextField上滑动左手势

我有tableviewcells中的UITextFields。 当您滑过单元格而不是文本字段的一部分时,删除操作按预期方式出现。 如果你滑过文本框,它会停止popup删除。

我如何解决这个问题,以便你可以滑过input,单元格将触发删除操作?

我认为这里的问题是触摸文本字段干扰您的滑动手势识别器(可能附加到父视图)。 我有一个与UIScrollView中放置的文本字段类似的问题。

我通过在UITextField上覆盖一个清晰的UIView来解决这个问题。 然后,我分配了一个UITapGestureRecognizer到这个清晰的视图来设置文本字段作为第一响应者,当用户点击该字段。 否则,被刷卡被发送到父视图(滚动视图),它可以识别没有任何问题的滑动。 这是一种跛脚,但它的作品。

这种情况有点不同于你,但我认为这是同样的问题。 这是我的代码看起来像,希望它可以帮助:

// UIView subclass header @interface LSAddPageView : UIView @property (weak, nonatomic) IBOutlet UITextField *textField; // Connected to the UITextField in question @property (strong, nonatomic) UIView *textFieldMask; @property (assign, nonatomic) BOOL textFieldMaskEnabled; @end // UIView subclass implementation @implementation LSAddPageView - (void)awakeFromNib { [super awakeFromNib]; _textFieldMask = [UIView new]; _textFieldMask.backgroundColor = [UIColor clearColor]; [self insertSubview:_textFieldMask aboveSubview:self.textField]; } - (void)layoutSubviews { [super layoutSubviews]; _textFieldMask.frame = self.textField.frame; } - (BOOL)textFieldMaskEnabled { return _textFieldMask.hidden == NO; } - (void)setTextFieldMaskEnabled:(BOOL)textFieldMaskEnabled { _textFieldMask.hidden = !textFieldMaskEnabled; } @end 

然后在控制器中:

 - (void)viewDidLoad { [super viewDidLoad]; _addPageView = (LSAddPageView*)self.view; _maskGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapMask:)]; _maskGestureRecognizer.numberOfTapsRequired = 1; _maskGestureRecognizer.numberOfTouchesRequired = 1; [_addPageView.textFieldMask addGestureRecognizer:_maskGestureRecognizer]; self.textField.delegate = self; // Set delegate to be notified when text field resigns first responder } - (void)didTapMask:(UIGestureRecognizer*)recognizer { _addPageView.textFieldMaskEnabled = NO; [self.textField becomeFirstResponder]; } - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { _addPageView.textFieldMaskEnabled = YES; return YES; } 

听起来像你需要设置cancelsTouchesInView属性

 yourGestureRecognizer.cancelsTouchesInView = NO; 

从UIButton和UITextField将阻止UITableViewCell被刷卡删除

 self.tableView.panGestureRecognizer.delaysTouchesBegan = YES; 

这将使文本字段不会停留在左侧刷卡游客