我正在尝试从5秒开始实现NSTimer倒计时。但是我收到消息“没有已知的选择方程的方法scheduledTimerWithTimeInterval:target:selector:userInfo:重复.....”我错过了什么?如果你在方法-void(showInView)中查看MTPopupWindow.m的底部,你会发现出现错误的代码。
此致
MTPopupWindow.h
@class MTPopupWindow;
@protocol MTPopupWindowDelegate <NSObject>
@optional
- (void) willShowMTPopupWindow:(MTPopupWindow*)sender;
- (void) didShowMTPopupWindow:(MTPopupWindow*)sender;
- (void) willCloseMTPopupWindow:(MTPopupWindow*)sender;
- (void) didCloseMTPopupWindow:(MTPopupWindow*)sender;
@end
@interface MTPopupWindow : UIView
+(MTPopupWindow*)showWindowWithHTMLFile:(NSString*)fileName;
+(MTPopupWindow*)showWindowWithHTMLFile:(NSString*)fileName insideView:(UIView*)view;
- (void)timerFireMethod;
-(void)showInView:(UIView*)v;
+(void)setWindowMargin:(CGSize)margin;
@property (strong, nonatomic) NSString* fileName;
@property (strong, nonatomic) UIWebView* webView;
@property (weak, nonatomic) id <MTPopupWindowDelegate> delegate;
@property (nonatomic) BOOL usesSafari;
@property (nonatomic, retain) NSTimer* timer;
@end
MTPopupWindow.m
#import "MTPopupWindow.h"
#import "QuartzCore/QuartzCore.h"
#define kCloseBtnDiameter 30
#define kDefaultMargin 18
static CGSize kWindowMarginSize;
@interface MTPopupWindow() <UIWebViewDelegate>
{
UIView* _dimView;
UIView* _bgView;
UIActivityIndicatorView* _loader;
NSTimer *timer;
}
@end
@interface MTPopupWindowCloseButton : UIButton
+ (id)buttonInView:(UIView*)v;
@end
@interface UIView(MTPopupWindowLayoutShortcuts)
-(void)replaceConstraint:(NSLayoutConstraint*)c;
-(void)layoutCenterInView:(UIView*)v;
-(void)layoutInView:(UIView*)v setSize:(CGSize)s;
-(void)layoutMaximizeInView:(UIView*)v withInset:(float)inset;
-(void)layoutMaximizeInView:(UIView*)v withInsetSize:(CGSize)insetSize;
@end
@implementation MTPopupWindow
@synthesize fileName = _fileName;
@synthesize webView = _webView;
@synthesize usesSafari = _usesSafari;
@synthesize delegate = _delegate;
@synthesize timer;
-(void)showInView:(UIView*)v
{
.......
self.timer = [NSTimer scheduledTimerWithTimeInterval:5 taget:self selector:@selector(timerFireMethod:) userInfo:nil repeats:NO];
&lt; ---没有用于selector scheduledTimerWithTimeInterval的类方法:target:selector ....
}
-(void)timerFireMethod:(NSTimer *)theTimer{
NSLog(@"bla bla time is out");
MTPopupWindowCloseButton* btnClose = [MTPopupWindowCloseButton buttonInView:self];
[btnClose addTarget:self action:@selector(closePopupWindow) forControlEvents:UIControlEventTouchUpInside];
}
答案 0 :(得分:2)
您在方法调用中将'target'拼错为'target'。做:
self.timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:NO];
相反。
答案 1 :(得分:-1)
.h文件中的方法是: - (void)timerFireMethod; 但在选择器是:timerFireMethod: 最后用“:”但没有参数,这就是原因。
你在h文件和m文件之间的定义不一致。 请更正timerFireMethod方法。