我的自定义键盘和播放“咔嗒”声音有些问题.我正在使用以下课程和定义.
KeyboardShotInputView.h
#import <UIKit/UIKit.h> //------------------------------------------------------------------------------ // Protocol defintion //------------------------------------------------------------------------------ @protocol KeyboardShotInputDelegate - (void)shotButtonDidTouchDown:(Nsstring*)value; - (void)deleteButtonDidTouchDown; @end //------------------------------------------------------------------------------ // Interface defintition //------------------------------------------------------------------------------ @interface KeyboardShotInputView : UIView <UIInputViewAudioFeedback> @property (nonatomic,strong) id <KeyboardShotInputDelegate> delegate; @property (strong,nonatomic) IBOutlet UIView *keyboard; @property (strong,nonatomic) IBOutletCollection(UIButton) NSArray *shotButtonCollection; @property (weak,nonatomic) IBOutlet UIButton *deleteButton; - (UIView *) getKeyboardView; - (IBAction)shotButtonpressed:(id)sender; - (IBAction)deleteButtonpressed:(id)sender; @end
KeyboardShotInputView.m
#import "KeyboardShotInputView.h" @implementation KeyboardShotInputView @synthesize keyboard; @synthesize shotButtonCollection; @synthesize deleteButton; //------------------------------------------------------------------------------ - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self loadInputView]; } return self; } //------------------------------------------------------------------------------ - (id)initWithCoder:(NSCoder *)coder { self = [super initWithCoder:coder]; if (self) { [self loadInputView]; } return self; } //------------------------------------------------------------------------------ - (void)loadInputView { // load nib file UINib *inputViewNib = [UINib nibWithNibName:@"KeyboardShotInput" bundle:nil]; [inputViewNib instantiateWithOwner:self options:nil]; // layout shot input buttons for (UIButton *btn in shotButtonCollection) { //[btn.layer setBorderWidth:1.0]; [btn.layer setCornerRadius:5.0]; [btn.layer setShadowColor:[UIColor blackColor].CGColor]; [btn.layer setShadowOpacity:0.9]; [btn.layer setShadowRadius:1.0]; [btn.layer setShadowOffset:CGSizeMake(0.0,1.0)]; } // layout delete button [self.deleteButton.layer setBorderWidth:1.0]; [self.deleteButton.layer setCornerRadius:5.0]; [self.deleteButton.layer setCornerRadius:5.0]; [self.deleteButton.layer setShadowColor:[UIColor blackColor].CGColor]; [self.deleteButton.layer setShadowOpacity:0.9]; [self.deleteButton.layer setShadowRadius:1.0]; [self.deleteButton.layer setShadowOffset:CGSizeMake(0.0,1.0)]; } //------------------------------------------------------------------------------ /** * Enable input clicks. */ - (BOOL) enableInputClicksWhenVisible { NSLog(@"enableInputClicksWhenVisible: YES"); return YES; } //------------------------------------------------------------------------------ /** * Return Keyboard object. * * @return UIView of the keyboard. */ - (UIView *) getKeyboardView; { return self.keyboard; } //------------------------------------------------------------------------------ /** * Any of the shot button is pressed. * * @param sender Shot button object. */ - (IBAction)shotButtonpressed:(id)sender { if (!self.delegate) return; // play click NSLog(@"shotButtonpressed: playInputClick"); [[UIDevice currentDevice] playInputClick]; [self.delegate shotButtonDidTouchDown:[(UIButton *)sender currentTitle]]; } //------------------------------------------------------------------------------ /** * The delete button is pressed. * * @param sender DEL button object. */ - (IBAction)deleteButtonpressed:(id)sender { if (!self.delegate) return; // play click NSLog(@"deleteButtonpressed: playInputClick"); [[UIDevice currentDevice] playInputClick]; [self.delegate deleteButtonDidTouchDown]; } @end
EditShootingResultTableViewController.m
- (void)viewDidLoad { [super viewDidLoad]; // connect keyboard toolbar self.keyboardToolbar = [[KeyboardToolbar alloc] init]; self.keyboardToolbar.delegate = self; // connect shot input keyboard self.keyboardShotInputView = [[KeyboardShotInputView alloc] init]; self.keyboardShotInputView.delegate = self; for (UITextField* tf in self.tfShotCollection) { tf.inputView = [self.keyboardShotInputView getKeyboardView]; } //... } //------------------------------------------------------------------------------ // @name KeyboardShotInputDelegates /** * Receive a message every time the user touches any shot input button. */ - (void)shotButtonDidTouchDown:(Nsstring *)value { // handle keyboard event here... } //------------------------------------------------------------------------------ /** * Receive a message every time the user touches the shot delete button. */ - (void)deleteButtonDidTouchDown { // handle keyboard event here... }
一切都很好.即使是键盘代表的召唤.我从方法enableInputClicksWhenVisible获得除NSLog之外的所有NSLog输出.有谁知道出了什么问题?几天后我找不到任何解决方案.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。