[英]How much of the “Objective-C” I'm learning is universal Objective-C, and not Apple's frameworks?
[英]I'm just beginning Objective-C and I'm developing an iPhone app. I need some help with Objective-C
我14岁,正在开发第二个iOS应用程序:我为学校创建的基于Web聊天室的iPhone版本。 我对Objective-C的了解很少,我需要一些帮助。 这是一个非常基本的应用程序,在视图底部有一个UIWebView和一个工具栏。 工具栏包含一个文本字段和一个“发送”按钮。 我使UIWebView正常工作并指向正确的站点,但是我需要两件事:
1.当点击文本框时,我需要工具栏将其自身重新定位在键盘顶部,同时还要调整UIWebView的大小以获取正确的空间。
和
2.我需要找到一种方法,当点击“发送”按钮或按下键盘上的“发送”键时,可以将文本字段的内容在线发布到我的PHP脚本中。
任何帮助将非常感激!
编辑:这是该应用程序的一些屏幕截图。
应用截图 。
您将要看一看“管理键盘”。
实质上,您想要做的是让文本字段的委托处理键盘通知“ UIKeyboardWillShowNotification”,并使用它将提供的信息将工具栏移动到适当的位置,并可能带有动画。
--- UPDATE ---
环顾四周,我发现:
这里有很多东西要回答!
重新定位工具栏
要重新定位工具栏,您需要做一些事情:
为了在用户点击您的文本字段时获得通知,您需要:
UITextFieldDelegate
协议。 -textFieldDidBeginEditing:
要调整控件的大小,您需要将它们声明为IBOutlets并将其连接到接口构建器中。 最好的选择是阅读《 Interface Builder快速入门指南》 。
发送数据
发送数据将更加棘手。 您可以做的几件事:
通过使用诸如NSString
的-initWithContentsOfURL:
类的方法作弊并以“ GET”数据形式发送数据(类似这样:)
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];
通过这种方式,您将可以在php脚本中获取消息,如下所示:
$encoded_message = $_GET['message'];
$message = urldecode($encoded_message);
这不是最可靠的方法,但是对于一个高中项目来说,应该没问题。
您可以使用更强大的方法来实现此目的,即使用可可库。 我不会深入研究这些细节,因为它非常复杂,并且苹果自己的开发人员文档在解释它方面做得更好: URL加载系统编程指南
编辑:根据Hack Saw的文章,使用NSNotification确定何时显示键盘会更好。 通过按照我所描述的委托方式进行操作,只有在选择了特定的文本字段时,才会通知您。 可以在这里找到有关管理键盘的文档: 适用于iOS的文本,Web和编辑编程指南
这是一种快速花哨的方法来向上移动工具栏。 我相信您将能够适应您的需求。
首先,您必须注册键盘通知
[[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。 您将在不显示键盘的情况下调整视图的大小,并在底部保留一个大的空白框。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.