// // TunerSettingView.m // KulexiuForStudent // // Created by 王智 on 2022/10/20. // #import "TunerSettingView.h" #import #define MAXFREQUENCE (445) #define MINFREQUENCE (415) @interface TunerSettingView () @property (weak, nonatomic) IBOutlet UIView *containerView; @property (weak, nonatomic) IBOutlet NSLayoutConstraint *containerWidth; @property (nonatomic, copy) TunerSettingCallback callback; @property (weak, nonatomic) IBOutlet UILabel *frequenceLabel; @end @implementation TunerSettingView - (void)awakeFromNib { [super awakeFromNib]; UITapGestureRecognizer *tapGes = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)]; [self addGestureRecognizer:tapGes]; tapGes.delegate = self; if (IS_IPAD) { self.containerWidth.constant = 320; } } - (void)tapGesture: (UITapGestureRecognizer *)tapGesture { [self removeView]; } -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{ if ([touch.view isDescendantOfView:self.containerView]) { return NO; } return YES; } + (instancetype)shareInstance { TunerSettingView *view = [[[NSBundle mainBundle] loadNibNamed:@"TunerSettingView" owner:nil options:nil] firstObject]; return view; } - (void)tunerSettingAction:(TunerSettingCallback)callback { if (callback) { self.callback = callback; } } - (void)showView { [[NSObject getKeyWindow] addSubview:self]; [self setPopAnimation]; } - (void)removeView { [self removeFromSuperview]; } - (IBAction)frequenceMinus:(id)sender { NSInteger frequence = self.A4Frequence; if (self.A4Frequence <= MINFREQUENCE) { return; } self.A4Frequence = frequence - 1; } - (IBAction)frequenceAdd:(id)sender { NSInteger frequence = self.A4Frequence; if (self.A4Frequence >= MAXFREQUENCE) { return; } self.A4Frequence = frequence + 1; } - (IBAction)resetFrequence:(id)sender { self.A4Frequence = DEFALUT_A4FREQUENCE; } - (IBAction)chooseInstrunemt:(id)sender { if (self.callback) { self.callback(TUNETSETTING_ACTION_INSTRUMENT, self.toneChangeRate, self.A4Frequence); } } - (IBAction)sureAtion:(id)sender { if (self.callback) { self.callback(TUNETSETTING_ACTION_SURE, self.toneChangeRate, self.A4Frequence); } [self removeView]; } - (void)setA4Frequence:(NSInteger)A4Frequence { _A4Frequence = A4Frequence; self.frequenceLabel.text = [NSString stringWithFormat:@"%zdHz",A4Frequence]; } /* // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code } */ @end