![](/img/trans.png)
[英]Why does my NSFetchedResultsController delegate stop firing when I add an NSPredicate?
[英]Why does the TableView delegate methods stop working when I add a UITapGestureRecognizer handler method
我有一个 UITableViewController 和一个正在弹出窗口中使用的 xib。 在我尝试向视图添加 UITapGestureRecognizer 之前,它工作正常。 将 tableview 作为插座集合连接到 UITapGestureRecognizer,当用户点击 table 中的项目时,tap 处理程序会触发,但 tableview 的 didSelectRowAtIndexPath 方法不再触发。
我想要做的是获取水龙头的位置,以便我可以在合理的位置抛出下一个弹出窗口。 也许有更好的方法来做到这一点?
这是我的 tableview 接线的样子......
这是识别器的接线...
这是我的点击处理程序,当用户选择一个项目时,它会很好地触发。
- (IBAction)tapHandler:(UITapGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
tapPosition = [sender locationInView:self.view];
}
}
这是 didselectrowAtIndexPath 方法。 除非我连接了 tapGestureRecognizer,否则会很好地触发...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[myPO dismissPopoverAnimated:YES];
[self.delegate popupListItemSelected:self withItemRow:indexPath.row item:[listItems objectAtIndex:indexPath.row]];
}
这是我的接口文件的适用部分。 所有的对象都是合成的...
#import <UIKit/UIKit.h>
@protocol PopUpListViewControllerDelegate;
@interface PopUpListViewController : UITableViewController {
id<PopUpListViewControllerDelegate> delegate;
IBOutlet UITableView *poupListTableView;
UIPopoverController *myPO;
NSMutableArray *listItems;
IBOutlet UITapGestureRecognizer *tapRecognizer;
}
@property (assign) id<PopUpListViewControllerDelegate> delegate;
@property (retain, nonatomic) IBOutlet UITableView *poupListTableView;
@property (retain, nonatomic) NSMutableArray *listItems;
@property (retain, nonatomic) IBOutlet UITapGestureRecognizer *tapRecognizer;
- (IBAction)tapHandler:(UITapGestureRecognizer *)sender;
- (CGPoint)getTappedPosition;
@end
一种选择可能是使用点击处理程序中的 CGPoint 并使用 UITableView 方法找到相应的行:
- (NSIndexPath *)indexPathForRowAtPoint:(CGPoint)point;
因此,所有内容都可能由您的 tapHandler 处理:(警告!未经测试的伪代码!)
- (IBAction)tapHandler:(UITapGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
tapPosition = [sender locationInView:self.view];
// use the appropriate name for your tableView, of course.
CGPoint pointInTable = [sender locationInView:self.tableView];
NSIndexPath * indexPath = [self.tableView indexPathForRowAtPoint:pointInTable];
[myPO dismissPopoverAnimated:YES];
[self.delegate popupListItemSelected:self withItemRow:indexPath.row item:[listItems objectAtIndex:indexPath.row]];
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.