相关疑难解决方法(0)

检测某些UIView是否被其他UIViews触及

我有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)

iphone uiview uitouch

31
推荐指数
6
解决办法
5万
查看次数

表视图单元格上的长按手势

我想在桌面视图单元格上进行两次交互:正常点击和长按.我使用以下答案来帮助我开始:

长按UITableView

问题是如果我长按一个有效的单元格,单元格将突出显示蓝色,并且长按手势不会触发(它认为它只是一个简单的点击).但是,如果我在一个无效的单元格上启动长按手势,然后将我的手指滑动到一个有效的单元格然后释放,它就可以正常工作.

objective-c uitableview uigesturerecognizer ios

7
推荐指数
2
解决办法
2万
查看次数

UICollectionViewCell上的手势; 怎么处理结果?

我目前正在开发一个iPad应用程序项目.主屏幕是一个UICollectionViewAlbumCell的子类UICollectionViewCell.现在我想添加一个UILongPressGestureRecognizer弹出一个UIActionSheet.

首先我尝试了UICollectionViewController,但我认为这不是添加它们的正确位置.所以我最好的猜测是在AlbumCell课堂上添加手势?然后可能将自己添加为委托,因此它捕获了自己的手势.

到目前为止这是一个好方法吗?

在我抓住手势后,我应该展示一下UIActionSheet.现在我UICollectionViewController在用户在编辑模式下选择单元格时打开它.但是我应该UICollectionViewController像打开现在一样打开它吗?或者细胞应该自己处理UIActionSheet吗?

最终我UICollectionViewController要做的事情,可能是让他打开UIActionSheet,或者相应地处理它的结果.如何AlbumCell与它"沟通"?

这是我多次努力的事情,而不仅仅是在这个用例中.方法是否接近,或者我应该完全不同地处理这些行为?

objective-c ios6 uicollectionview

7
推荐指数
1
解决办法
3549
查看次数

如何在tableview中检测双击/触摸事件

经过长时间但徒劳无功的搜索,我无法在我的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)

如果我删除此标志条件,则只需单击即可调用新视图.我错在哪里或者还有其他方法可以做到这一点.

iphone objective-c uitableview ios

6
推荐指数
2
解决办法
4420
查看次数

检测触摸并按住UITableView内部

我正在尝试在UITableView中检测触摸并保持手势,同时跟踪选择了哪个单元格.我需要能够区分单元格上的正常点击和持续时间超过X秒(可能是1秒左右)的触摸.主要的挑战是我想在没有子类化UITableViewCell的情况下这样做,因为这样做会大大减慢我的滚动速度.我认为使用NSTimer可能有一种方法可以做到这一点,但我似乎无法让它正常工作.使用touchesBegan:和touchesEnded:有一个计时器,因为我没有看到任何方法来跟踪选择哪个单元格,除非有一些方法用这些方法做到这一点?任何帮助将不胜感激.

提前致谢.

iphone uitableview

1
推荐指数
2
解决办法
6816
查看次数