首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >titleView可以接受点击手势吗?

titleView可以接受点击手势吗?
EN

Stack Overflow用户
提问于 2014-05-16 02:48:50
回答 1查看 897关注 0票数 0

在自定义类MMTimerButton中,我设置按钮以响应单个和一个双击。

代码语言:javascript
复制
- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        [self setBackgroundColor: [UIColor clearColor]];
        UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
        singleTapRecognizer.numberOfTapsRequired=1;
        singleTapRecognizer.delaysTouchesEnded=YES;

        UITapGestureRecognizer *doubleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
        doubleTapRecognizer.numberOfTapsRequired=2;

        [singleTapRecognizer requireGestureRecognizerToFail: doubleTapRecognizer];
        [self addGestureRecognizer:singleTapRecognizer];
        [self addGestureRecognizer:doubleTapRecognizer];
    }
    return self;
}

我在同一个文件中实现了这两种方法

代码语言:javascript
复制
-(void)handleTap:(UITapGestureRecognizer *)sender{
    NSLog(@"single tap");
}
-(void)handleDoubleTap:(UITapGestureRecognizer *)sender{
    NSLog(@"double tap");
}

在标题中,我声明了两个方法

代码语言:javascript
复制
#import <UIKit/UIKit.h>

@interface MMTimerButton : UIButton
-(void)handleTap:(UITapGestureRecognizer *)sender;
-(void)handleDoubleTap:(UITapGestureRecognizer *)sender;

在情节提要中,我向接口添加了一个按钮,并将其自定义类设置为MMTimerButton。

当我单击按钮(在模拟器中)时,什么都没有发生。一次点击,两次点击,都没有。

我还尝试不使用按钮,只需在titleView中添加手势识别器。当我单击模拟器中的标题时,什么都不会发生。

代码语言:javascript
复制
 UITapGestureRecognizer* doubleTap = [[UITapGestureRecognizer alloc] initWithTarget : self action : @selector (handleDoubleTap:)];   
UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget : self action : @selector (handleSingleTap:)];
[singleTap requireGestureRecognizerToFail : doubleTap];
[doubleTap setDelaysTouchesBegan : YES];
[singleTap setDelaysTouchesBegan : YES];
[doubleTap setNumberOfTapsRequired : 2];
[singleTap setNumberOfTapsRequired : 1];
self.navigationItem.title =@"title";
[self.navigationItem.titleView addGestureRecognizer:doubleTap];
[self.navigationItem.titleView addGestureRecognizer:singleTap];

但是,当我将此代码添加到头视图时,它可以正常工作(在模拟器中)。

代码语言:javascript
复制
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{

    UILabel *headerLabel = [[UILabel alloc]init];
    headerLabel.tag = section;
    headerLabel.userInteractionEnabled = YES;
    headerLabel.backgroundColor = [UIColor clearColor];
    headerLabel.text = [NSString stringWithFormat:@"0:00",section];
    headerLabel.textAlignment = UITextAlignmentCenter;

    headerLabel.frame=CGRectMake(10,-5,tableView.frame.size.width,41);

    UITapGestureRecognizer* doubleTap = [[UITapGestureRecognizer alloc] initWithTarget : self action : @selector (handleDoubleTap:)];

    UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget : self action : @selector (handleSingleTap:)];
    [singleTap requireGestureRecognizerToFail : doubleTap];
    [doubleTap setDelaysTouchesBegan : YES];
    [singleTap setDelaysTouchesBegan : YES];
    [doubleTap setNumberOfTapsRequired : 2];
    [singleTap setNumberOfTapsRequired : 1];
    self.navigationItem.title =@"title";
    [headerLabel addGestureRecognizer:doubleTap];
    [headerLabel addGestureRecognizer:singleTap];

    return headerLabel;

    //return nil;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-16 02:57:34

您在这里显示了很多麻烦的代码,所以很难知道从哪里开始。

  • initWithFrame:的情况下,问题是该方法从未被调用过按钮。此外,您有一个冲突,因为按钮已经包含了对内部点击(它是一个按钮!)的响应能力。
  • 在第二组代码中,您从未将titleView设置为视图,因此它是零,而您的代码什么也不做。另外,您不能同时设置titletitleView (您正在设置title)。

你的标题问题的答案是,当然,一个titleView可以回应一个点击。很多应用程序都是这样做的(包括我的)。

另外,你不需要你的requireGestureRecognizerToFail -一个单一的点击手势识别器和一个双点击手势识别器已经知道如何在它们之间进行调解。

所以基本上我的建议是:停止使一切复杂化。不要做大的假设,而要投入其中。从你知道有用的东西开始,然后采取一些小步骤。使用日志记录/断点测试所有内容,看看正在发生的事情是您所想象的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23691867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档