Rem*_*123 4 cocoa-touch objective-c uiresponder uigesturerecognizer ios
我想知道用户何时触摸了我的应用程序屏幕上的任何位置.
我已经研究过使用- (UIResponder*)nextResponder但不幸的是这不起作用,因为我也自动重新加载了一个表,因此当发生这种情况时会触发它.
我还尝试了一个手势识别器,代码如下.但这只会识别视图中的触摸.我有许多按钮,用户将用它来操作应用程序.我想避免在屏幕上的每个按钮和段控件中添加手势识别器或代码
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOnView:)];
[self.mainView addGestureRecognizer:tap];
- (void)tapOnView:(UITapGestureRecognizer *)sender
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
我也试过- (void)touchesBegan:(NSSet*)触及withEvent:(UIEvent*)事件,但这与手势识别器有同样的问题.
我想知道是否有任何方法可以完成这项任务.我希望我能够从nextResponder中识别出事件的类型,然后我可以检测它是否是按钮.
编辑:我正在处理这个问题的原因是我的应用程序需要保持活动状态,屏幕无法锁定(因此我禁用了屏幕锁定).为了避免过度使用电源,我需要调暗屏幕,但是一旦触摸应用程序,然后将亮度恢复到原始水平.我需要此功能才能在我的一个视图控制器上发生.
dan*_*ham 10
正如Ian MacDonald所提到的,使用它hitTest::
是一个很好的解决方案,可以在应用程序范围内检测用户交互,包括选择按钮,文本字段等.
我的解决方案是子类化UIWindow
并实现hitTest方法.
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
// do your stuff here
// return nil if you want to prevent interaction with UI elements
return [super hitTest:point withEvent:event];
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15536 次 |
最近记录: |