uiscrollview 里面内嵌几个button 怎么完美解决点击事件的响应
1个回答
展开全部
UISCrollView本身不支持touch,
需要重写UIImageView类,响应touch事件,委托给你的类处理,
重写UIImageView类代码如下,然后在要添加UIImageView的类中,实现下面代码定义的协议
#import <Foundation/Foundation.h>
@protocol ImageViewDelegate
@optional
-(void)TouchesBegin:(NSInteger)imageTag;
@end
@interface CustomizeImageView : UIImageView {
//声明一个代理
id<ImageViewDelegate> delegate;
}
@property (nonatomic,assign) id<ImageViewDelegate> delegate;
@end
#import "CustomizeImageView.h"
@implementation CustomizeImageView
@synthesize delegate;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//NSLog(@"delegate:%@",self.delegate);
[self.delegate TouchesBegin:self.tag];
}
- (void)dealloc {
[super dealloc];
}
@end
UIScrollView把touch事件隔离了,它默认响应的是drag事件。
重写UIImageView类,然后往UIScrollView添加CustomizeImageView,并且把self. delegate = self;
这样,UIImageView就把touch事件委托给别人处理了,
在要处理的类中,实现上述协议即可
需要重写UIImageView类,响应touch事件,委托给你的类处理,
重写UIImageView类代码如下,然后在要添加UIImageView的类中,实现下面代码定义的协议
#import <Foundation/Foundation.h>
@protocol ImageViewDelegate
@optional
-(void)TouchesBegin:(NSInteger)imageTag;
@end
@interface CustomizeImageView : UIImageView {
//声明一个代理
id<ImageViewDelegate> delegate;
}
@property (nonatomic,assign) id<ImageViewDelegate> delegate;
@end
#import "CustomizeImageView.h"
@implementation CustomizeImageView
@synthesize delegate;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//NSLog(@"delegate:%@",self.delegate);
[self.delegate TouchesBegin:self.tag];
}
- (void)dealloc {
[super dealloc];
}
@end
UIScrollView把touch事件隔离了,它默认响应的是drag事件。
重写UIImageView类,然后往UIScrollView添加CustomizeImageView,并且把self. delegate = self;
这样,UIImageView就把touch事件委托给别人处理了,
在要处理的类中,实现上述协议即可
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询