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