繁体   English   中英

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

[英]UIControl: Touch Up Inside work but Touch Up Outside does not

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

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

谢谢

董道

触摸视图时会触发Touch Up Outside,但手指会移动到视图之外并被抬起。 您无法使用其他视图获取触摸事件。

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

我在过去通过创建自定义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

在这里有一个可下载的示例/教程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM