UIControl:Touch Up Inside工作但Touch Up Outside没有

时间:2010-10-18 11:02:29

标签: iphone cocoa-touch

我有一个UIView,在更大的UIView前面,我想隐藏当前的视图,当点击后面的视图但我无法获得Touch Up Outside事件工作,Touch Up Inside the View工作正常。

(后面的View有另一个控件)

由于

Tung Do

2 个答案:

答案 0 :(得分:12)

触摸视图时会触发Touch Up Outside,但手指会移动到视图之外并被抬起。你无法通过它获得其他观点的触摸事件。

要完成您想要的任务,您需要一个透明视图(opaque = NO,backgroundColor = [UIColor clearColor]),它会在您感兴趣的视图后面填满整个屏幕。为此,您可以捕捉Touch Up Inside事件,然后隐藏两个视图。

答案 1 :(得分:0)

我过去通过创建自定义UIView然后覆盖UIView类的pointInside方法来完成此操作。这是每次UIView获取触摸通知时触发的方法。当发生这种情况时,您可以查看触摸是否在您的视图范围之内或之外。

例如,您的自定义UIView可能如下所示:

<强> CustomTouchUIView.h

#import 

@protocol CustomTouchUIViewDelegate

- (void) uiViewTouched:(BOOL)wasInside;

@end

@interface CustomTouchUIView : UIView 

// Properties
@property (nonatomic, assign) id delegate;

@end

<强> CustomTouchUIView.m

#import "TOTouchUIView.h"

@implementation CustomTouchUIView

#pragma mark - Synthesize
@synthesize delegate;

#pragma mark - Touches
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
    if( point.x > 0 && point.x < self.frame.size.width && point.y > 0 && point.y < self.frame.size.height )
    {
        [delegate uiViewTouched:YES ];
        return YES;
    }

    [delegate uiViewTouched:NO ];
    return NO;
}
@end

我有一个可下载的示例/教程在线here