[英]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.