繁体   English   中英

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

[英]Is there a way to manipulate the keyboard programmatically for the iPhone?

我有一个简单的iPhone应用程序,它具有一个按钮,并使用MFMessageComposeViewControler发送文本消息。 当用户按下按钮时,MFMessageComposeViewController会拉起键盘,并且用户能够按预期发送短信。

我希望能够操作该键盘。 换句话说,例如,如果用户要发送文本“你好吗”,我希望能够在我的程序中识别短语“你好吗”并将其更改为“生活怎么样”或将其更改为任何内容。 这可能吗?

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

没有合法的方法可以在iPhone上的iOS中编辑键盘。 按照我在下面的回答,您希望能够“拦截” MFMessageComposeViewController使用的文本字段/文本视图。

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

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


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

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

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

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

要使视图控制器成为其他两件事的委托,您可以像下面在头文件中那样定义它:

@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

然后使用我在下面讨论的委托方法来截获带有/正在输入的文本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM