触摸方法不是在appdelegate中调用

时间:2013-01-24 11:19:16

标签: iphone ios objective-c xcode appdelegate

我在导航栏上的appdelegate文件中显示UILabel(不完全在导航栏上)。它显示完美。但没有触摸事件正在呼吁它。 Touch仅在状态栏上有效。请帮忙。提前谢谢。

这是我的代码。

CGRect frame=[[UIApplication sharedApplication] statusBarFrame];
backgroundImageView=[[UILabel alloc] initWithFrame:CGRectMake(0, frame.size.height, 320, 44)];        
backgroundImageView.tag=50;
[backgroundImageView setTextAlignment:UITextAlignmentCenter];
[backgroundImageView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"music.png"]]];
[self.window addSubview:backgroundImageView];

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{   
    NSLog(@"in touched");
}

1 个答案:

答案 0 :(得分:0)

正如泰勒在his answer here中所述:

  

UIWindow中有一个方便的catch-all方法叫做sendEvent:which   看到事件处理管道开始附近的每个事件。如果你   想做任何非标准的额外事件处理,这是一个很好的   放置它。

要拦截所有触摸,您应该使用UIView子类作为控制器视图,并覆盖其中的hitTest:withEvent:方法:

    - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
        touchedView = [super hitTest:point withEvent:event];
        NSSet* touches = [event allTouches];
        // handle touches if you need
        return touchedView;
        }

2)您可以使用:

UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(anyMethod)];  
[imageView addGestureRecognizer:tgr];  
[tgr release];  

Before doing this, enable user interaction of UIimageView.