有没有办法以编程方式为iPhone操作键盘?

时间:2010-08-05 14:54:01

标签: iphone sms

我有一个简单的iPhone应用程序,它有一个按钮,并使用MFMessageComposeViewControler发送短信。当用户按下按钮时,MFMessageComposeViewController会拉出键盘,用户可以按预期发送短信。

我希望能够操纵那个键盘。换句话说,例如,如果用户去发送文本“你好吗”,我希望能够在我的程序中识别出“你好吗”并将其改为“生命是怎样的”或改变它为什么。这可能吗?

2 个答案:

答案 0 :(得分:0)

编辑:在回答之前,我应该更彻底地阅读你的问题。

在iPhone上没有合法的方法在iOS中编辑键盘。根据我在下面的回答,您希望能够“拦截”MFMessageComposeViewController使用的textfield / textview。

通过研究MFMessageComposeViewController类(及其委托),没有公开的方法来“拦截”用户输入的消息。您可以做的最好的事情是用一些文本启动用户的消息。

如果你想实现这一目标,可能通过对MFMessageComposeViewController进行子类化(并找出textfield / view实例变量是什么),很可能Apple不会接受你的App Store应用程序。


旧答案:如果你想做这样的事情,你需要查看UITextField(UITextFieldDelegate)的委托方法。您可以采取多种不同的方法。

textField:shouldChangeCharactersInRange:replacementString: - 实现此方法将允许您更改输入的字符。

textFieldDidEndEditing: - 实现此功能将允许您“拦截”已编辑的文本字段。反过来,您可以使用传递给方法的文本字段来获取字符串并根据需要操作或更改单词。

如果您使用的是UITextView,它也有自己的委托(UITextViewDelegate),您可以使用非常类似的方法拦截用户输入的文本。

答案 1 :(得分:0)

要使视图控制器成为另外两件事的委托,您可以在头文件中定义它,如下所示:

@interface AViewController : UIViewController <UITextFieldDelegate, MFMessageComposeViewControllerDelegate> {

    // Variable Definitions for your
    // textfield and uibutton


}

// Method Declarations here.
// You don't need to define the delegate methods,
// Just implement them in your .m file.

@end

然后使用我在下面讨论过的委托方法拦截已输入/正在输入的文本。