[英]programmatic UITableView's didSelectRowAtIndexPath not responding to touch
[英]Touch not responding with UITableView
我有一个带有UINavigationViewController的情节提要,其中包含一个UITableView和一个UIToolBar。 TableView填充良好,但是当我触摸TableViewCell时没有响应。 它亮起,但是选择不会持久,并且不会调用处理程序函数。 当我在单元格上进行某种滑动时,有时会记录触摸事件并调用处理程序。 看起来好像无法识别touchEvents或将其保留。 这是我的设置:
NavigationView的View组件配置
UITableView配置
值得注意的是,如果我用两根手指触摸该单元格,它将选择该单元格! 因此,在这种情况下将调用此处理程序:
- (void)viewDidLoad {
[super viewDidLoad];
self.selectedWerkzaamheden = self.model.selectedWerkorder.werkbonWerkzaamheden;
self.selectedWerkzaamheden = [NSMutableArray arrayWithArray:self.model.selectedWerkorder.werkbonWerkzaamheden];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
[self.myTableView reloadData];
}
...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
self.selectedWerkzaamheidIndex = indexPath.row;
self.selectedWerkzaamheid = self.selectedWerkzaamheden[self.selectedWerkzaamheidIndex];
self.trashBtn.enabled = TRUE;
}
声明文件:
#import "LmxViewController.h"
#import "LmxDropDownDataVO.h"
@interface LmxWerkzaamheidViewController : LmxViewController <UITableViewDataSource>
@property NSString *faultTitle;
@property NSString *faultMessage;
@property IBOutlet UIButton *selectWerkzaamheidBtn;
@property LmxDropDownDataVO *selectedWerkzaamheid;
@property NSInteger selectedWerkzaamheidIndex;
@property NSMutableArray *selectedWerkzaamheden;
@property IBOutlet UIBarButtonItem *submitBtn;
@property IBOutlet UITableView *werkzaamheidTableView;
@property (strong, nonatomic) IBOutlet UIBarButtonItem *trashBtn;
- (IBAction)selectWerkzaamheid:(id)sender;
- (IBAction)saveWerkzaamheidWithWerkorder:(id)sender;
- (IBAction)cancel:(id)sender;
@end
我提供电池的方式可能有问题吗?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSMutableArray *werkzaamheden = self.selectedWerkzaamheden;
static NSString *simpleTableIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
NSInteger row = indexPath.row;
LmxDropDownDataVO *data = (LmxDropDownDataVO *)werkzaamheden[row];
cell.textLabel.text = data.naam;
return cell;
}
问题是我确实在viewDidLoad类中留下了一段代码,该代码掩盖了表格视图单元格的touch事件。
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
显然,这阻止了触摸事件到达Table View Delegate函数:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
感谢您的贡献。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.