0

我已经查看了具有相同问题的所有其他问题,但我似乎无法听到它的声音。我很确定我做的一切都是正确的,因为这不是我第一次使用代表。

//PDFView.h
@class PDFView;

@protocol PDFViewDelegate <NSObject>
-(void)trialwithPOints:(PDFView*)pdfview;
@end

@interface PDFView : UIView
@property (nonatomic, weak) id <PDFViewDelegate> delegate;

在实现文件中,我试图从视图的 touchesMoved 委托调用委托方法

//PDFView.m
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.delegate trialwithPOints:self];
}

实现委托方法的类

//points.h
#import "PDFView.h"
@interface points : NSObject <PDFViewDelegate>

//points.m

//this is where the delegate is set
- (id)init
{
if ((self = [super init]))
{   
      pdfView = [[PDFView alloc]init];
      pdfView.delegate = self;

}
 return self;
 }

-(void)trialwithPOints:(PDFView *)pdf
{
    NSLog(@"THE DELEGATE METHOD CALLED TO PASS THE POINTS TO THE CLIENT");
}

所以这就是我写我的委托的方式,不知何故委托是零,委托方法永远不会被调用。

目前我没有对代表做任何事情,我只是想看到它工作。

对此的任何建议将不胜感激。

4

1 回答 1

1

我认为这是因为您没有持有对委托实例的引用,并且它被释放是因为它被声明了weak。你可能会这样做:

pdfView.delegate = [[points alloc] init];

您应该将其修复为:

_points = [[points alloc] init];
pdfView.delegate = _points;

_points实例变量在哪里。

于 2013-08-01T02:17:48.927 回答