Ios MjpegView未响应UITapGestureRecognitor
我有从下载的MjpegView(在MJPEGiPhone项目中,它被命名为MJPEGClient,我将其重命名为MjpegView以便于理解其功能) 基本上,MjpegView是UIImageView的扩展,并使用NSUrlConnection从url获取mjpeg图像。我将UITapGestureRecognitor添加到MjpegView,但当我点击时它没有响应 MjpegView的代码片段如下:Ios MjpegView未响应UITapGestureRecognitor,ios,objective-c,uitapgesturerecognizer,mjpeg,Ios,Objective C,Uitapgesturerecognizer,Mjpeg,我有从下载的MjpegView(在MJPEGiPhone项目中,它被命名为MJPEGClient,我将其重命名为MjpegView以便于理解其功能) 基本上,MjpegView是UIImageView的扩展,并使用NSUrlConnection从url获取mjpeg图像。我将UITapGestureRecognitor添加到MjpegView,但当我点击时它没有响应 MjpegView的代码片段如下: @interface MjpegView : UIImageView @end @imple
@interface MjpegView : UIImageView
@end
@implementation MjpegView
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
if (_endMarkerData == nil) {
uint8_t endMarker[2] = END_MARKER_BYTES;
_endMarkerData = [[NSData alloc] initWithBytes:endMarker length:2];
}
self.contentMode = UIViewContentModeScaleAspectFit;
singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onSingleTap:)];
singleTapRecognizer.numberOfTapsRequired = 1;
singleTapRecognizer.numberOfTouchesRequired = 1;
[self addGestureRecognizer:singleTapRecognizer];
[[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:_url] delegate:self];
}
return self;
}
#pragma mark - NSURLConnection Delegate Methods
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
//NSLog(@"didReceiveResponse");
if (_receivedData) {
[_receivedData release];
}
_receivedData = [[NSMutableData alloc] init];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
//NSLog(@"didReceiveData");
[_receivedData appendData:data];
NSRange endRange = [_receivedData rangeOfData:_endMarkerData
options:0
range:NSMakeRange(0, _receivedData.length)];
long long endLocation = endRange.location + endRange.length;
if (_receivedData.length >= endLocation) {
NSData *imageData = [_receivedData subdataWithRange:NSMakeRange(0, endLocation)];
UIImage *receivedImage = [UIImage imageWithData:imageData];
if (receivedImage) {
self.image = receivedImage;
}
}
}
@end
我怀疑这是因为主线程正忙于用mpjeg图像更新视图,因此无法检测到点击。有人对如何实现这一点有建议吗?默认情况下,
UIImageView
hasuserInteractionEnabled
为false
设置属性userInteractionEnabled=YES
试试这个
@implementation MjpegView
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
if (_endMarkerData == nil) {
uint8_t endMarker[2] = END_MARKER_BYTES;
_endMarkerData = [[NSData alloc] initWithBytes:endMarker length:2];
}
self.contentMode = UIViewContentModeScaleAspectFit;
self.userInteractionEnabled=YES;
singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onSingleTap:)];
singleTapRecognizer.numberOfTapsRequired = 1;
singleTapRecognizer.numberOfTouchesRequired = 1;
[self addGestureRecognizer:singleTapRecognizer];
[[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:_url] delegate:self];
}
return self;
}
您在何处将UITapGestureRecognitor添加到视图中?ops我在这里错过了它,已经编辑了我的问题。这是我在这里犯的一个简单的错误。我以为是代表们造成的。很高兴帮助你……)