//- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
//{
// return [super hitTest:point withEvent:event];
//}
/**
告诉系统:触摸点point是否在这个UI控件身上
如果该对象返回NO,那么不会调用该对象的上面的方法hitTest方法
*/
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
// 初始化矩形框
[self setupSpecialRects];
// 根据触摸点获得被触摸的特殊字符串
LZSpecial *special = [self touchingSpecialWithPoint:point];
if (special) {
return YES;
} else {
return NO;
}
}
// 触摸事件的处理
// 1.判断触摸点在谁身上: 调用所有UI控件的- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
// 2.pointInside返回YES的控件就是触摸点所在的UI控件
// 3.由触摸点所在的UI控件选出处理事件的UI控件: 调用- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
// 把Main.storyboard里面的view,换成greenView
// LZGreenView.h
#import <UIKit/UIKit.h>
@interface LZGreenView : UIView
@end
// LZGreenView.m
#import "LZGreenView.h"
#import "LZRedView.h"
@interface LZGreenView()
@property (nonatomic, weak) UIButton *button;
@property (nonatomic, weak) LZRedView *redView;
@end
@implementation LZGreenView
- (void)awakeFromNib
{
self.backgroundColor = [UIColor greenColor];
// UIButton *button = [UIButton buttonWithType:UIButtonTypeContactAdd];
// button.center = CGPointMake(100, 100);
// [button addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
// [self addSubview:button];
// self.button = button;
LZRedView *redView = [[LZRedView alloc] init];
redView.frame = CGRectMake(100, 100, 100, 100);
[self addSubview:redView];
self.redView = redView;
}
//- (void)click
//{
// NSLog(@"点击了按钮");
//}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"HMGreenView----touchesBegan");
}
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
return self.redView;
}
@end
// LZRedView.h
#import <UIKit/UIKit.h>
@interface LZRedView : UIView
@end
// LZRedView.m
#import "LZRedView.h"
@implementation LZRedView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor redColor];
}
return self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"LZRedView****----touchesBegan");
}
@end
触摸事件处理
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 触控是移动设备的核心功能,也移动应用交互的基础,Android 和 iOS 各自都有完善的触摸事件处理机制。Rea...
- 我们在使用ViewPager来承载自定义控件时,可能会遇到这样一种情况:我们自定义的控件被触摸后,被滑动的居然是V...
- 触控是移动设备的核心功能,也移动应用交互的基础,Android 和 iOS 各自都有完善的触摸事件处理机制。Rea...