我有3个UIViews,分层在一个大的uiview之上.我想知道用户是否接触到最顶层而不关心其他用户.我将在第二个UIView中有几个按钮,在第三个UIView中有一个UITable.
问题是我在第一个视图上打开userInteractionEngabled并且它可以工作,但是即使我将其关闭,所有其他视图也以相同的方式响应.如果我在self.view上禁用userInteractionEnabled,则它们都不会响应.我也无法检测touchesBegan委托方法中触摸了哪个视图.
我的代码:
UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 150)];
aView = userInteractionEnabled = YES;
[self.view addSubview:aView];
UIView *bView = [[UIView alloc] initWithFrame:CGRectMake(0, 150, 320, 50)];
bView.userInteractionEnabled = NO;
[self.view addSubview:bView];
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//This gets called for a touch anywhere
}
Run Code Online (Sandbox Code Playgroud) 我想在桌面视图单元格上进行两次交互:正常点击和长按.我使用以下答案来帮助我开始:
问题是如果我长按一个有效的单元格,单元格将突出显示蓝色,并且长按手势不会触发(它认为它只是一个简单的点击).但是,如果我在一个无效的单元格上启动长按手势,然后将我的手指滑动到一个有效的单元格然后释放,它就可以正常工作.
我目前正在开发一个iPad应用程序项目.主屏幕是一个UICollectionView带AlbumCell的子类UICollectionViewCell.现在我想添加一个UILongPressGestureRecognizer弹出一个UIActionSheet.
首先我尝试了UICollectionViewController,但我认为这不是添加它们的正确位置.所以我最好的猜测是在AlbumCell课堂上添加手势?然后可能将自己添加为委托,因此它捕获了自己的手势.
到目前为止这是一个好方法吗?
在我抓住手势后,我应该展示一下UIActionSheet.现在我UICollectionViewController在用户在编辑模式下选择单元格时打开它.但是我应该UICollectionViewController像打开现在一样打开它吗?或者细胞应该自己处理UIActionSheet吗?
最终我UICollectionViewController要做的事情,可能是让他打开UIActionSheet,或者相应地处理它的结果.如何AlbumCell与它"沟通"?
这是我多次努力的事情,而不仅仅是在这个用例中.方法是否接近,或者我应该完全不同地处理这些行为?
经过长时间但徒劳无功的搜索,我无法在我的tableview中检测到双击/触摸事件,实际上想要双击任何细节视图TableViewCell,实际上我甚至不知道如何在所有.
到目前为止这是我的代码......
在viewDidLoad中
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)];
tapGesture.numberOfTapsRequired = 2;
[self.myTable addGestureRecognizer:tapGesture];
Run Code Online (Sandbox Code Playgroud)
该handleTapGesture方法是
- (void)handleTapGesture:(UITapGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateRecognized) {
flag = true;
}
}
Run Code Online (Sandbox Code Playgroud)
最后触摸或点击tableview的单元格,委托方法是
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (flag == true)
{
DetailInvoicing *detail = [[DetailInvoicing alloc] initWithNibName:@"DetailInvoicing" bundle:nil];
detail.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
detail.customerName = [customerArray objectAtIndex:indexPath.row];
[self presentViewController:detail animated:YES completion:nil];
}
}
Run Code Online (Sandbox Code Playgroud)
如果我删除此标志条件,则只需单击即可调用新视图.我错在哪里或者还有其他方法可以做到这一点.
我正在尝试在UITableView中检测触摸并保持手势,同时跟踪选择了哪个单元格.我需要能够区分单元格上的正常点击和持续时间超过X秒(可能是1秒左右)的触摸.主要的挑战是我想在没有子类化UITableViewCell的情况下这样做,因为这样做会大大减慢我的滚动速度.我认为使用NSTimer可能有一种方法可以做到这一点,但我似乎无法让它正常工作.使用touchesBegan:和touchesEnded:有一个计时器,因为我没有看到任何方法来跟踪选择哪个单元格,除非有一些方法用这些方法做到这一点?任何帮助将不胜感激.
提前致谢.