ios - 检测用户何时离开 viewController

标签 ios objective-c

我有 Controller (新闻屏幕),我需要检测用户何时离开它。我试过了

- (void)viewWillDisappear:(BOOL)animated

,但问题是,当用户点击共享按钮(在社交网络等中共享)时,该方法会触发,但共享后用户仍处于新闻屏幕中,因此它不起作用。

我也尝试过

-(void)willMoveToParentViewController:(UIViewController *)parent {

,但它也会在用户第一次进入 Controller 时触发,这是错误的(我只需要检测离开)。

如何检测用户何时离开 Controller ,但在进入“共享”弹出屏幕时不触发?

最佳答案

These four methods can be used in a view controller's appearance callbacks to determine if it is being presented, dismissed, or added or removed as a child view controller. For example, a view controller can check if it is disappearing because it was dismissed or popped by asking itself in its viewWillDisappear: method by checking the expression ([self isBeingDismissed] || [self isMovingFromParentViewController]).

- (BOOL)isBeingPresented NS_AVAILABLE_IOS(5_0);
- (BOOL)isBeingDismissed NS_AVAILABLE_IOS(5_0);

- (BOOL)isMovingToParentViewController NS_AVAILABLE_IOS(5_0);
- (BOOL)isMovingFromParentViewController NS_AVAILABLE_IOS(5_0);

针对您的场景使用 isMovingFromParentViewController

 -(void)viewWillDisappear:(BOOL)animated{
       [super viewWillDisappear:animated];

       if (self.isMovingFromParentViewController){ 

       }
  }

关于ios - 检测用户何时离开 viewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38098705/

相关文章:

ios - 如何在 SpriteKit 中添加高亮按钮?

ios - 使用 NSDateFormatter > 日期方式将 NSString 转换为 NSDate

ios - 如何在页脚中添加分隔符?

iphone - 从 superView 获取特定类型 View 的所有元素

iOS崩溃文件崩溃似乎是 block

ios - RSKImageCropper 无法快速配置

ios - 决定使用核心数据或 NSUserDefaults

ios - 蓝牙配对 - HFP 配置文件和经典蓝牙/BLE

ios - 跟踪 _objc_msgSend 在 dispatch_sync block 内崩溃的策略

ios - 使用 Objective C 创建并从 Swift 获取的核心数据