iphone - 在ios中使用自定义键盘的问题

标签 iphone ios objective-c keyboard

我已经从this下载了一个示例项目使用自定义键盘的链接。

它工作得很好。

但是,当我在项目中使用它时,它返回一个错误 - -[UIView playKeyboardClick]: 无法识别的选择器发送到实例 0x71d6390

我做了什么 -

我为 NerdKeyboardView.h 添加了新的 viewcontoller 文件 NerdKeyboard.hNerdKeyboard.m 以及 UIView 文件和 NerdKeyboardView.m。我从示例项目中粘贴了相同的代码,并在 xib 中进行了相同的设计。

但是当我单击 NerdKeyboard.xib 文件中的按钮时,它会返回错误

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[UIView playKeyboardClick]:无法识别的选择器发送到实例 0x71d6390” *** 首先抛出调用栈: (0x1c92012 0x10cfe7e 0x1d1d4bd 0x1c81bbc 0x1c8194e 0x2769 0x10e3705 0x172c0 0x17258 0xd8021 0xd857f 0xd76e8 0x46cef 0x46f02 0 x24d4a 0x16698 0x1beddf9 0x1bedad0 0x1c07bf5 0x1c07962 0x1c38bb6 0x1c37f44 0x1c37e1b 0x1bec7e3 0x1bec668 0x13ffc 0x1ebd 0x1de5) libc++abi.dylib:终止调用抛出异常

如果您想查看代码:

NerdKeyboard.h

#import <UIKit/UIKit.h>

@interface NerdKeyboard : UIViewController

@property (nonatomic, weak) id delegate;

- (IBAction)keyPress:(id)sender;
- (IBAction)doneEditing:(id)sender;

@end

NerdKeyboard.m

#import "NerdKeyboard.h"
#import "NerdKeyboardView.h"

@implementation NerdKeyboard

- (IBAction)keyPress:(id)sender
{
   [(NerdKeyboardView *)self.view playKeyboardClick];

   if (self.delegate && [self.delegate respondsToSelector:@selector(setText:)]) {
       NSString *oldText = [self.delegate text];
       NSString *thisKey = [[(UIButton *)sender titleLabel] text];

       [self.delegate performSelector:@selector(setText:) withObject:[oldText stringByAppendingString:thisKey]];
   } else if (self.delegate && [self.delegate respondsToSelector:@selector(nerdKeyPress:)]) {
       [self.delegate performSelector:@selector(nerdKeyPress:) withObject:[[(UIButton *)sender titleLabel] text]];
   }
}

- (IBAction)doneEditing:(id)sender
{
   if (self.delegate && [self.delegate respondsToSelector:@selector(resignFirstResponder)]) {
       [self.delegate performSelector:@selector(resignFirstResponder)];
   }
}

@end

NerdKeyboardView.h

#import <UIKit/UIKit.h>

@interface NerdKeyboardView : UIView <UIInputViewAudioFeedback>

- (void)playKeyboardClick;

@end 

NerdKeyboardView.m

#import "NerdKeyboardView.h"

@implementation NerdKeyboardView

- (BOOL)enableInputClicksWhenVisible {
    return YES;
}

- (void)playKeyboardClick
{
    [[UIDevice currentDevice] playInputClick];
}

@end

当我调试它时,错误在行中抛出 [(NerdKeyboardView *)self.view playKeyboardClick];

可能是什么问题?

如有任何建议,我们将不胜感激。

最佳答案

如果连接不正确或者操作系统无法找到定义的函数,就会出现这种错误。如果您使用的是xib,请检查连接是否更正确。否则请检查函数setText 书写正确。可能大小写或函数名称有问题。

关于iphone - 在ios中使用自定义键盘的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16663484/

相关文章:

ios - iOS 中的自动 OTP 验证?

objective-c - 无法为 "Symbolic Breakpoint"添加 "-[NSTextField setStringValue:]"

ios - 使用 iCloud 同步复制 CoreData 记录

iphone - 没有进入功能-navigationController :willShowViewController:animated:

jquery - 上传前调整图像大小

html - 在 iPhone 中单击 anchor /链接(在特定页面中)时字体大小会增加

ios - 如何获取 UICollectionViewCell 的 indexPath 并保存它

ios - NSTextContainer exclusionPaths 随文本移动

iphone - UITableView NSInternalInconsistencyException 抛出错误;一个单元格有两个动画

android - 使用 Phonegap 2.0.0 在 Android 和 iPhone 上共享 Twitter 和 Facebook