gpt4 book ai didi

iphone - 禁用 iPhone 屏幕某些区域的触摸事件

转载 作者:太空狗 更新时间:2023-10-30 03:48:35 27 4
gpt4 key购买 nike

除了特定的几个点(例如按钮)之外,我想禁用屏幕所有区域的触摸。 IE。当我点击按钮以外的任何东西时,我根本不想触发“touchesBegan”。呼唤

    self.view.userInteractionEnabled = NO;

具有不注册触摸的预期效果,但当然我不能点击任何按钮。我基本上希望按钮仍然有效,即使有 5 个点触摸屏幕,即所有触摸输入都已用完,按钮代表第 6 个点。

这可能吗?

我已经尝试在我的按钮下方插入一个禁用了 userInteraction 的 View ,但是当用户点击屏幕时它仍然会记录触摸。似乎禁用触摸注册的唯一方法是在整个屏幕上(在父 UIView 上)这样做。

更新:我试过使用手势识别器来处理所有触摸事件,并忽略那些不符合条件的。这是我的代码:

@interface ViewController : UIViewController <UIGestureRecognizerDelegate>

...

    - (void)viewDidLoad
{
[super viewDidLoad];
UIGestureRecognizer *allRecognizer = [[UIGestureRecognizer alloc] initWithTarget:self action:nil];
allRecognizer.delegate = self;
[self.view addGestureRecognizer:allRecognizer];
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
CGPoint coords = [touch locationInView:self.view];
NSLog(@"Coords: %g, %g", coords.x, coords.y);
if (coords.y < 200) {
[self ignoreTouch:touch forEvent:nil];
return TRUE;
}
return FALSE;

}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"%i touch(es)", [touches count]);
}

但是屏幕仍然“读取”触摸,所以如果我按下 5 根手指,第 6 根手指不会触发按钮按下...

最佳答案

您需要设置一个不可见的 UIButton,并将其放置在不应注册触摸的 View 和仍应处于事件状态的 UIButton 之间。

现在您需要设置不可见按钮的“userInteractionEnabled”:

//userInteractionEnabled == NO  => self.view registeres touches
//userInteractionEnabled == YES => self.view doesn't register touches
[_invisibleButton setUserInteractionEnabled:NO];

在这个解决方案中真正重要的是,不可见和可见按钮都是 VC View 的直接 subview 。

您可以从我的保管箱下载示例项目: https://dl.dropboxusercontent.com/u/99449487/DontTapThat.zip

但是这个例子只是阻止了某些触摸的处理。完全忽略输入在技术上是不可能的:第三方应用不负责检测输入。他们只负责处理 输入。触摸输入的检测是iOS完成的。

像您在评论中描述的那样构建案例的唯一方法是希望 iOS 不会将您的案例输入解释为“手指”,因为它很可能覆盖的区域比一根手指。

因此,总而言之,最好的方法是更改​​您要构建的外壳的 Material ,或者至少给它涂上一层绝缘涂层。从第三方开发人员的角度来看,如果评论中描述的需要 5 个手指,则无法通过软件实现您的目标。

关于iphone - 禁用 iPhone 屏幕某些区域的触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18514632/

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