我无法把头转过来 – (void)playInputClick;

我有一个UITextField设置的inputAccessoryView,它是在需要的时候从XIB加载(与Apple的KeyboardAccessory示例完全一样)。

我试图让button上点击时使用playInputClick函数按下,但我不知道如何。 苹果文档说,我需要添加一个委托方法的视图,但该视图纯粹是在界面生成器创build的,所以我不明白我能做到这一点。

有谁知道如何使这项工作? 在互联网上的任何地方似乎都没有使用这种方法的示例代码。

我一直有同样的问题,最后搞清楚了。

如果您在UIViewController中实现协议,则不起作用。 它需要在UIView子类中实现。

所以为了使它工作,我用界面控制器在界面生成器中创build了一个视图。 然后我添加了另一个类,它是UIView的子类。 这个类实现了UIInputViewAudioFeedback协议。 然后在界面生成器中,我去了我的视图的身份检查器,并将类更改为我的UIView子类实现UIInputViewAudioFeedback协议。 键盘咔嗒声现在正在工作。

我的视图控制器仍在调用[[UIDevice currentDevice] playInputClick] ,我所做的只是将UIInputViewAudioFeedback协议的代码移动到UIView子类,并将我的视图类设置为我的UIView子类。

假设你正在尝试在inputAccessoryView中做到这一点:

.h文件中,指出您实现了UIInputViewAudioFeedback

 @interface YourAcessoryView : UIView <UIInputViewAudioFeedback> 

.m文件中,添加此方法以满足协议

 - (BOOL)enableInputClicksWhenVisible { return YES; } 

当按下button时,请执行以下操作:

 - (void)buttonPressed:(UIButton*)sender { [[UIDevice currentDevice] playInputClick]; // do more stuff } 

您需要实现一个视图控制器类,然后在界面生成器中将文件的所有者作为这个类来分配。 将视图控制器的视图连接到您的视图。

一旦你完成了,你可以在视图控制器中实现委托。 它非常简单直接。 基本上你的视图将是一个视图控制器类的成员。