Credo che il problema qui è che il tocco sul campo di testo sta interferendo con il riconoscitore colpo gesto (presumibilmente attaccato alla vista primaria). Ho avuto un problema simile con un campo di testo che è stato inserito in un UIScrollView.
Ho risolto questo problema sovrapponendo un UIView chiaro in cima al mio UITextField. Ho quindi assegnato un UITapGestureRecognizer a questa vista chiara per impostare il campo di testo come primo risponditore quando l'utente tocca il campo. In caso contrario, lo swipe viene inviato alla vista genitore (una vista di scorrimento) che riconosce lo scorrimento senza problemi. È una specie di zoppo, ma funziona.
Questo scenario è leggermente diverso dal tuo, ma penso che sia lo stesso problema. Ecco ciò che il mio codice è simile, si spera che aiuta:
// 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
E poi nel controller:
- (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;
}
fonte
2014-07-01 03:47:52
hai risolto questo problema? –
No. Ho ridisegnato l'interfaccia attorno al problema. –
Prova ad aggiungere - (void) tableView: (UITableView *) tableView commitEditingStyle: (UITableViewCellEditingStyle) editStyle forRowAtIndexPath: (NSIndexPath *) indexPath. Funziona il fascino della menzogna – Lightygalaxy