簡體   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