我14岁开发了我的第二个iOS应用程序:我为学校创建的基于网络的聊天室的iPhone版本。我对Objective-C知之甚少,我需要一些帮助。这是一个非常基本的应用程序,我在视图底部有一个UIWebView和一个工具栏。工具栏包含文本字段和“发送”按钮。我让UIWebView工作并指向正确的站点,但我需要两个基本的东西:
1。我需要工具栏在点击文本框时将自身重新定位到键盘顶部,同时调整UIWebView的大小以获得正确的空间。
和
2. 我需要找到一种方法,在点击“发送”按钮或按下键盘上的“发送”键时,将我的文本字段的内容发布到我的PHP脚本中
非常感谢任何帮助!
修改:以下是该应用的一些屏幕截图。
答案 0 :(得分:1)
您需要查看“管理键盘”。
在本质上,您要做的是让textfield的委托处理键盘通知“UIKeyboardWillShowNotification”,并使用它将提供的信息将工具栏移动到位,可能带有动画。
--- --- UPDATE
环顾四周,我发现了这个:
答案 1 :(得分:1)
这里有很多东西要回答!
重新定位工具栏
要重新定位工具栏,您需要做一些事情:
为了在用户点击您的文字字段时收到通知,您需要:
UITextFieldDelegate
协议(很可能是主视图控制器)。-textFieldDidBeginEditing:
。要调整控件的大小,您需要将它们声明为IBOutlets并在界面构建器中将它们连接起来。您最好的选择是阅读Interface Builder Quick Start Guide。
发送数据
发送数据将是一个棘手的问题。你可以做几件事:
使用像NSString
的{{1}}这样的方法作弊并将数据作为“GET”数据发送(如下所示)
-initWithContentsOfURL:
通过这种方式,您将能够在您的PHP脚本中获取消息,如下所示:
NSString *chatString = [textField stringValue]; //get the chat string
NSString *encodedString = [chatString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; //URL-encode any special characters
NSString *urlToRequest = [NSString stringWithFormat:@"http://mysite.com/chat.php?message=%@", encodedString];
NSURL *requestURL = [NSURL URLWithString:urlToRequest];
NSString *urlResult = [NSString stringWithContentsOfURL:requestURL];
这不是最强大的方式,但对于高中项目来说应该没问题。
更强大的方法是使用用于此目的的可可库。我不会深入研究这些细节,因为它非常复杂,Apple自己的开发人员文档在解释它时做得更好:URL Loading System Programming Guide
编辑:根据Hack Saw的帖子,使用NSNotification确定键盘何时显示更好。通过按照我所描述的方式执行委托方式,只有在选择了 特定文本字段时才会通知您。有关管理键盘的文档,请访问:Text, Web, and Editing Programming Guide for iOS
答案 2 :(得分:1)
这是一种快速移动工具栏的方法。我相信你能够根据自己的需要调整它。
首先,您必须注册键盘通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
然后向上移动工具栏。像这样。
- (void)keyboardWillShow:(NSNotification *)notification {
if (keyboardShown) {
return;
}
NSDictionary* info = [notification userInfo];
// Get the size of the keyboard.
NSValue* aValue = [info objectForKey:UIKeyboardFrameBeginUserInfoKey];
CGSize keyboardSize = [aValue CGRectValue].size;
CGRect currentFrame = self.toolbar.frame;
currentFrame.origin.y = currentFrame.origin.y - keyboardSize.height;
[UIView beginAnimations:@"ShowKeyboard" context:NULL];
[UIView setAnimationCurve:[[info objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]];
[UIView setAnimationDuration:[[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]];
self.toolbar.frame = currentFrame;
[UIView commitAnimations];
keyboardShown = YES;
}
当然你必须创建另一种隐藏键盘的方法,但这与显示键盘基本相同,所以我将省略它。
为了使事情变得更容易,您可以创建“内容”视图的工具栏和webview子视图。然后,您将调整contentview的高度,自动调整将处理其余部分。
哦,你不应该因为textFieldDidBeginEditing:
而调整视图大小。我不知道iPhone,但可以将外接键盘连接到ipad。你可以在没有键盘显示的情况下调整视图大小,在底部留下一个大的空白框架。