我有一个用于UITextField设置的inputAccessoryView,它在需要时从XIB加载(与Apple的KeyboardAccessory示例完全相同)。
我正在尝试使用playInputClick函数按下它上面的按钮,但我无法弄清楚如何。 Apple documentation表示我需要添加一个委托方法添加到视图中,但是视图是纯粹在界面构建器中创建的,所以我看不出我该怎么做。
有谁知道如何使这项工作?似乎没有在互联网上任何地方使用此方法的示例代码。
答案 0 :(得分:4)
我一直有同样的问题,最后想出来了。
如果在UIViewController中实现协议,则它不起作用。它需要在UIView子类中实现。
为了使其正常工作,我在界面构建器中使用视图控制器创建了一个视图。然后我添加了另一个类,它是UIView的子类。此类实现UIInputViewAudioFeedback协议。然后在界面构建器中,我转到了我的视图的Identity检查器,并将该类更改为我的UIView子类,该子类实现了UIInputViewAudioFeedback协议。键盘咔嗒声现在正在工作。
我的视图控制器仍在调用[[UIDevice currentDevice] playInputClick]
,我所做的只是将UIInputViewAudioFeedback协议的代码移动到UIView子类中,并将我的views类设置为我的UIView子类。
答案 1 :(得分:4)
假设您尝试在inputAccessoryView中执行此操作:
在.h
文件中,表明您实施了UIInputViewAudioFeedback
@interface YourAcessoryView : UIView <UIInputViewAudioFeedback>
在.m
文件中,添加此方法以满足协议
- (BOOL)enableInputClicksWhenVisible {
return YES;
}
按下按钮时,请执行以下操作:
- (void)buttonPressed:(UIButton*)sender
{
[[UIDevice currentDevice] playInputClick];
// do more stuff
}
答案 2 :(得分:-2)
您需要实现一个视图控制器类,并在界面构建器中将files'owner指定为此类。将视图控制器的视图连接到您的视图。
完成后,您可以在视图控制器中实现委托。 它非常简单直接。基本上,您的视图将是视图控制器类的成员。