gpt4 book ai didi

iphone - UITableView 中的 UIGestureRecognizer - 滚动后崩溃?

转载 作者:行者123 更新时间:2023-12-03 20:19:46 25 4
gpt4 key购买 nike

我有一个带有自定义单元格的 UITableView。每个单元格内有 2 个 View 。每个 View 都有一个附加的 UIGestureRecognizer 来处理点击事件。当点击 View 时,我向 UINavigationController 发送一条消息以推送详细信息 View 。在我实际滚动表格之前,这种情况效果很好。滚动表格后,当用户点击单元格内的 View 之一时,应用程序会崩溃。例如,我可以加载应用程序,单击第二个单元格中的 View ,然后将详细 View 正确推送到屏幕上。从那里,我导航回到表格,滚动到底部,回到顶部,然后点击相同的 View 。从那里开始,应用程序崩溃并出现无法识别的选择器错误。这是我的手势设置(在 viewDidLoad 中):

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self 
action:@selector(handleTap:)];
[self.view addGestureRecognizer:recognizer];
recognizer.delegate = self;
[recognizer release];

这是调用的方法:

-(void)handleTap:(UITapGestureRecognizer *)sender{
NSLog(@"Handling tap on ArticleTileViewController");
ArticleViewController *vc = [[ArticleViewController alloc] initWithArticleData:self.articleDataArray];
PROJECTAppDelegate *appDelegate = (PROJECTAppDelegate *)[UIApplication sharedApplication].delegate;

[appDelegate.navController pushViewController:vc animated:YES];
}[appDelegate.navController pushViewController:vc animated:YES];
}

最后,这是我在控制台中获得的堆栈跟踪:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType handleTap]: unrecognized selector sent to instance 0x607ba30'
*** Call stack at first throw:
(
0 CoreFoundation 0x02839b99 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x0298940e objc_exception_throw + 47
2 CoreFoundation 0x0283b6ab -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x027ab2b6 ___forwarding___ + 966
4 CoreFoundation 0x027aae72 _CF_forwarding_prep_0 + 50
5 UIKit 0x0057f060 -[UIGestureRecognizer _updateGestureWithEvent:] + 727
6 UIKit 0x0057b8bf -[UIGestureRecognizer _delayedUpdateGesture] + 47
7 UIKit 0x00580152 _UIGestureRecognizerUpdateObserver + 637
8 UIKit 0x00581464 _UIGestureRecognizerUpdateGesturesFromSendEvent + 51
9 UIKit 0x0032a844 -[UIWindow _sendGesturesForEvent:] + 1292
10 UIKit 0x003263bf -[UIWindow sendEvent:] + 105
11 UIKit 0x00309cb4 -[UIApplication sendEvent:] + 447
12 UIKit 0x0030e9bf _UIApplicationHandleEvent + 7672
13 GraphicsServices 0x02f07822 PurpleEventCallback + 1550
14 CoreFoundation 0x0281aff4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
15 CoreFoundation 0x0277b807 __CFRunLoopDoSource1 + 215
16 CoreFoundation 0x02778a93 __CFRunLoopRun + 979
17 CoreFoundation 0x02778350 CFRunLoopRunSpecific + 208
18 CoreFoundation 0x02778271 CFRunLoopRunInMode + 97
19 GraphicsServices 0x02f0600c GSEventRunModal + 217
20 GraphicsServices 0x02f060d1 GSEventRun + 115
21 UIKit 0x00312af2 UIApplicationMain + 1160
22 PROJECT 0x00002459 main + 121
23 PROJECT 0x000023d5 start + 53
24 ??? 0x00000001 0x0 + 1
)
terminate called after throwing an instance of 'NSException

'

编辑:经过一段时间的测试后,我确定只有当时屏幕上可见的 View 才会触发该事件。其他一切都会因上述错误而崩溃。可能与this有关未回答的问题?

这是我的 header 声明(为了清楚起见,省略了 iVar 和属性:

@interface ArticleTileViewController : UIViewController<UIGestureRecognizerDelegate> {

}

-(void)handleTap:(UITapGestureRecognizer *)sender;

最佳答案

基本上,这个问题意味着您正在向一个根本无法识别该消息的对象发送消息,即缺少该方法。

您的选择器创建不正确,它应该是:

UIGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];

- (void) handleTap:(UITapGestureRecognizer *)sender {

--更新--

recognizer.delegate = self;

很抱歉问这个问题,但是您确定“self”实际上具有方法handleTap:吗?

关于iphone - UITableView 中的 UIGestureRecognizer - 滚动后崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3913203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com