gpt4 book ai didi

ios - 如何使用 UINavigationController 中的所有 View 和导航 Controller 的导航控件检测用户事件?

转载 作者:行者123 更新时间:2023-11-29 11:51:21 26 4
gpt4 key购买 nike

我需要能够检测到任何事件(即不空闲),以便我可以重置倒数计时器。

我尝试使用 UIWindow sendEvent 路由,但这会导致太多副作用。是否没有一种简单的方法来检测 View 是否被点击、按钮是否被单击、用户导航到下一个屏幕等等?我不需要处理事件或任何事情,如果用户仍在使用导航 Controller ,我只需要重置计时器。顺便说一句,这个特别的导航 Controller 由代码中的另一个 UIViewController 呈现。

我尝试使用 UIGestureRecognizer 来处理它,但不幸的是,这种方法似乎无法处理 UINavigationController 的控件(例如下一个按钮、后退等)。

最佳答案

您可以为此目的使用自己的 UIWindow 子类,并通过几种 UIResponder 方法之一跟踪用户事件:

任何父 View 都可以跟踪 subview 的触摸事件。例如,您可以将 UINavigationController 嵌入到跟踪父 View Controller 中。

甚至可以通过添加到窗口将 NonTouchableView 放在屏幕上:

[self.view.window addSubview:myNonTouchableView];

这是不可触摸 View 的示例,可以跟踪触摸事件的发生:

@interface NonTouchableView : UIView

@property (weak, nonatomic) id delegate;

@end

@implementation NonTouchableView

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
// Report user activity to self.delegate
return nil;
}

@end

快速版本:

class NonTouchableView : UIView {

weak var delegate: Object?

func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
// Report user activity to delegate
return nil
}

}

关于ios - 如何使用 UINavigationController 中的所有 View 和导航 Controller 的导航控件检测用户事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41006036/

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