Этот код ниже немного взломанный, но он работает для меня, в основном просто установите userInteractionEnabled в UITextView в NO, а затем установите YES, когда вы обнаружите, что пользователь нажал на него. Ниже приведен код для моей пользовательской ячейки с текстовым просмотром, она прокручивается для меня, когда пользователь запускает прокрутку из UITextView. Это приводит к тому, что свиток представляет собой жест панорамы, а не кран.
#import "MyCell.h"
@interface MyCell() <UITextFieldDelegate>
@property (weak, nonatomic) IBOutlet UITextField *textField;
@end
@implementation MyCell
- (void)awakeFromNib
{
self.textField.userInteractionEnabled = NO;
self.textField.delegate = self;
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap:)];
[self addGestureRecognizer:tapRecognizer];
}
#pragma mark - Private methods
- (void)didTap:(UITapGestureRecognizer *)tapRecognizer
{
CGPoint location = [tapRecognizer locationInView:self];
CGRect pointRect = CGRectMake(location.x, location.y, 1.0f, 1.0f);
if (!CGRectIsNull(CGRectIntersection(pointRect, self.textField.frame))) {
self.textField.userInteractionEnabled = YES;
[self.textField becomeFirstResponder];
}
}
#pragma mark - UITextFieldDelegate methods
- (void)textFieldDidEndEditing:(UITextField *)textField
{
self.textField.userInteractionEnabled = NO;
}
@end
извините, текстовое поле не текстовое изображение. я обновлю свой вопрос – cannyboy
Я только что обновил свой ответ –
Эй, @AntonioMG, я думаю, что это, как правило, правильный путь, однако, когда вы имеете дело с табличным представлением, объект UIView, переданный в touchsShouldCancelInContentView: всегда представляется экземпляром UITableViewCellContentView, а не subviews, так что не думайте, что вы сможете проверить, какое представление было прослушировано. – marchinram