繁体   English   中英

我刚刚开始使用Objective-C,并且正在开发iPhone应用程序。 我需要有关Objective-C的帮助

[英]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 ---

环顾四周,我发现:

iPhone键盘套UITextField

这里有很多东西要回答!

重新定位工具栏

要重新定位工具栏,您需要做一些事情:

  • 在用户开始使用时获得通知
  • 调整Web视图的大小并移动工具栏

为了在用户点击您的文本字段时获得通知,您需要:

  • 在您的控制器(最有可能是主视图控制器)中实现UITextFieldDelegate协议。
  • 实现委托方法-textFieldDidBeginEditing:
  • 将您的控制器对象设置为文本字段的委托。
  • UITextFieldDelegateProtocol参考应该对此进行解释。

要调整控件的大小,您需要将它们声明为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.

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