Tôi nghĩ vấn đề ở đây là các liên lạc trên các lĩnh vực văn bản được can thiệp với nhận dạng cử chỉ swipe của bạn (có lẽ gắn liền với cái nhìn mẹ). Tôi đã có một vấn đề tương tự với một trường văn bản đã được đặt trong một UIScrollView.
Tôi gặp vấn đề này bằng cách phủ một UIView rõ ràng lên trên UITextField của tôi. Sau đó, tôi đã gán UITapGestureRecognizer cho chế độ xem rõ ràng này để đặt trường văn bản làm phần trả lời đầu tiên khi người dùng chạm vào trường. Nếu không, thao tác vuốt được gửi đến chế độ xem chính (chế độ xem cuộn) sẽ nhận ra thao tác vuốt mà không gặp bất kỳ sự cố nào. Đó là loại lame nhưng nó hoạt động.
Kịch bản này hơi khác so với của bạn, nhưng tôi cho rằng đó là vấn đề tương tự. Đây là những gì mã của tôi trông như thế nào, hy vọng nó giúp:
// 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
Và sau đó trong bộ điều khiển:
- (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;
}
Nguồn
2014-07-01 03:47:52
bạn đã giải quyết được vấn đề này chưa? –
Không. Tôi đã thiết kế lại giao diện xung quanh vấn đề. –
Cố gắng thêm - (void) tableView: (UITableView *) tableView commitEditingStyle: (UITableViewCellEditingStyle) editStyle forRowAtIndexPath: (NSIndexPath *) indexPath. Nó hoạt động nói dối quyến rũ – Lightygalaxy