#iphone #objective-c #ipad #uiscrollview #cocos2d-iphone
#iPhone #objective-c #iPad #uiscrollview #cocos2d-iphone
Вопрос:
Черт возьми, все,
Я новичок в iPhone и борюсь со следующей проблемой.
Когда я удаляю вид прокрутки с помощью следующего оператора, мое приложение выходит из строя.
[scrollView removeFromSuperview];
Я добавляю uiscrollview со следующей строкой.
[self.view addSubview:scrollView];
Вот журнал.
Thread 0 Crashed:
0 libobjc.A.dylib 0x34a80466 objc_msgSend 18
1 UIKit 0x341aaaa8 -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:] 152
2 UIKit 0x341aaace -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:] 190
3 UIKit 0x341aaace -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:] 190
4 UIKit 0x341c05a0 -[UIView(Hierarchy) removeFromSuperview] 208
5 UIKit 0x34249a76 -[UIScrollView removeFromSuperview] 42
6 KabushikiShimbun 0x000387b6 -[PDFPageScrollViewController ReGenerateScrollViewAsperNewData] (PDFPageScrollViewController.m:1451)
7 KabushikiShimbun 0x00038aac -[PDFPageScrollViewController CheckPageUpdationWithDate:] (PDFPageScrollViewController.m:1441)
8 KabushikiShimbun 0x0003c472 -[PDFPageScrollViewController requestFinished:] (PDFPageScrollViewController.m:792)
9 CoreFoundation 0x35818bb8 -[NSObject(NSObject) performSelector:withObject:] 16
10 KabushikiShimbun 0x0000e9ba -[ASIHTTPRequest reportFinished] (ASIHTTPRequest.m:1945)
11 CoreFoundation 0x35818bb8 -[NSObject(NSObject) performSelector:withObject:] 16
12 Foundation 0x3118178e __NSThreadPerformPerform 262
13 CoreFoundation 0x358307d6 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ 6
14 CoreFoundation 0x358025b0 __CFRunLoopDoSources0 376
15 CoreFoundation 0x35801e54 __CFRunLoopRun 224
16 CoreFoundation 0x35801c80 CFRunLoopRunSpecific 224
17 CoreFoundation 0x35801b88 CFRunLoopRunInMode 52
18 GraphicsServices 0x320c84a4 GSEventRunModal 108
19 GraphicsServices 0x320c8550 GSEventRun 56
20 UIKit 0x341dc322 -[UIApplication _run] 406
21 UIKit 0x341d9e8c UIApplicationMain 664
22 KabushikiShimbun 0x00002da6 main (main.m:14)
23 KabushikiShimbun 0x00002d70 start 32
Есть идеи?
Спасибо.
Комментарии:
1. Можете ли вы опубликовать какой-нибудь код? Вероятно, это недопустимый объект.
2. вы проверили с помощью отладчика? например, где происходит сбой со строкой?/
3. используете ли вы scrollview firstresponder?
4. когда вызывается [ScrollView removeFromSuperview];?
5. попробуйте настроить инструкцию NSLog непосредственно перед
[scrollView removeFromSuperview]
, чтобы увидеть, сколько раз она вызывается. у меня была проблема такого же типа при использовании распознавателей жестов, когда они вызывались несколько раз (по причинам, которые я до сих пор не могу выяснить, кроме возможной ошибки ios). при втором их вызове ничего не удаляется из супервизора и происходит сбой приложения
Ответ №1:
Проверьте, есть ли у него супервизор, прежде чем удалять из супервизора;
if([scrollView superview]!=nil){
[scrollView removeFromSuperview];
}
Ответ №2:
Попробуйте этот код
for(UIView *view in self.view.subviews)
{
if([view isMemberOfClass:[UIScrollView class]])
{
[scrollview removeFromSuperView];
}
}
Ответ №3:
Попробуйте этот код. Это протестировано.
NSArray *subviews = [[NSArray alloc] initWithArray:self.view.subviews];
for(UIScrollView *subview in subviews) {
[subview removeFromSuperView];
}
[subviews release];
но будьте осторожны, это удаляет все ScrollViews
присутствующие в вашем self.view