Smi*_*key 5 iphone user-input input objective-c touches
除了特定的几个点(例如按钮)之外,我想禁用屏幕上所有区域的触摸.也就是说,当我点击按钮以外的任何东西时,我根本不想触摸'touchesBegan'.调用
    self.view.userInteractionEnabled = NO;
没有注册触摸有所需的效果,但当然我不能点击任何按钮.我基本上希望按钮仍然有效,即使有5个点触摸屏幕,即所有触摸输入都已用完,按钮代表第6个.
这可能吗?
我已经尝试在我的按钮下方插入一个禁用了userInteraction的视图,但是当用户点击屏幕时它仍会记录触摸.似乎禁用触摸注册的唯一方法是在整个屏幕上(在父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,并将其放置在不应注册触摸的视图和应该仍处于活动状态的UIButton之间.
现在你需要设置隐形按钮的'userInteractionEnabled':
//userInteractionEnabled == NO  => self.view registeres touches
//userInteractionEnabled == YES => self.view doesn't register touches
[_invisibleButton setUserInteractionEnabled:NO];
在这个解决方案中真正重要的是,无形和可见按钮都是VC视图的直接子视图.
您可以从我的保管箱下载示例项目:https: //dl.dropboxusercontent.com/u/99449487/DontTapThat.zip
但是,此示例仅阻止处理某些触摸.完全忽略输入在技术上是不可能的:第三方应用程序不负责检测输入.他们只负责处理输入.触摸输入的检测是在iOS上完成的.
构建像你在评论中描述的案例的唯一方法是希望iOS不会将你的案例输入解释为"手指",因为它最有可能覆盖一个比手指大的区域.
因此,总之,最好的方法是改变您即将建造的箱子的材料,或者至少给它一个非导电涂层.从第三方开发人员的角度来看,如果评论中描述需要5个手指,则无法通过软件实现目标.
| 归档时间: | 
 | 
| 查看次数: | 5128 次 | 
| 最近记录: |