我无法理解 - (void)playInputClick;

时间:2011-07-29 11:11:54

标签: iphone objective-c ios cocoa-touch uikit

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

我正在尝试使用playInputClick函数按下它上面的按钮,但我无法弄清楚如何。 Apple documentation表示我需要添加一个委托方法添加到视图中,但是视图是纯粹在界面构建器中创建的,所以我看不出我该怎么做。

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

3 个答案:

答案 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指定为此类。将视图控制器的视图连接到您的视图。

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