缩放弹跳+导航栏后退按钮单击=应用程序崩溃

Posted

技术标签:

【中文标题】缩放弹跳+导航栏后退按钮单击=应用程序崩溃【英文标题】:zoom bouncing + navigation bar back button click = app crash 【发布时间】:2011-11-08 16:01:01 【问题描述】:

今天我的应用程序崩溃了,我知道为什么。 我有一个 UIViewController(图片类),上面有一个 ScrollView 和一个 ImageView。

@property (nonatomic, retain) IBOutlet UIScrollView *scrollview;
@property (nonatomic, retain) IBOutlet UIImageView *imageview;
@property (nonatomic, retain) IBOutlet UIActivityIndicatorView *activityIndicator;  

这是我通过pushViewController:pic animated:YES调用的第三个视图

这些是我的滚动视图配置(没有 initWithFrame):

[scrollview setBackgroundColor:[UIColor blackColor]];
[scrollview setShowsVerticalScrollIndicator:NO];
[scrollview setShowsHorizontalScrollIndicator:NO];
[scrollview setContentSize:scrollview.frame.size];
[scrollview setAlwaysBounceVertical:YES];
[scrollview setAlwaysBounceHorizontal:YES];
#warning BouncesZoom + BackButton = App Crash!
scrollview.bouncesZoom = YES;
scrollview.decelerationRate = UIScrollViewDecelerationRateFast;
[scrollview setDelegate:self]; 

所以现在我放大了,当我停止拖动图片时,将重新调整为 minimumSize。 如果我现在再次放大,按住拖动,用无名指按下导航控制器栏的后退按钮,应用程序崩溃:

2011-11-08 16:48:45.572 Archiv[1319:707] *** -[Picture respondsToSelector:]: message sent to deallocated instance 0x44e3960

你能帮帮我吗?请不要告诉我关闭bounceZoom。 $h@rky

【问题讨论】:

【参考方案1】:

解决了。

问题是scrollview-delegate 触发事件以反弹但对象已经释放。删除委托,一切都很好。

- (void)viewWillDisappear:(BOOL)animated    
    [scrollview setDelegate:nil];

亲切的问候。鲨鱼

【讨论】:

以上是关于缩放弹跳+导航栏后退按钮单击=应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

在执行功能时单击导航控制器上的后退按钮时应用程序崩溃

Xamarin Master Detail prism 导航栏后退按钮

从 SwiftUI 中的导航栏中删除后退按钮文本

单击时使导航栏折叠/关闭

单击导航条折叠/关闭

UIPageViewController 更改导航栏后退按钮标题