4

伙计们。这听起来完全像是我在要求你为我做作业,但我不是。我的雇主终于给了我这款可爱的新 MacBook Pro。我的任务之一将包括一些 iOS 开发。我对此很兴奋,我正努力投入学习,所以我正在制作一个愚蠢的小应用程序,它只是让我了解如何交互和编写一些代码。今天早上的任务是从文本字段中获取一些文本并将其显示在警报中。我做了很多谷歌搜索,发现了很多东西——甚至是 StackOverflow 上的东西——但其中很多都超出了我的想象或不完全相关。所以,我希望有人能告诉我我做错了什么。

这是我的文本字段代码:

-(IBAction)showInputMessage:(UITextField *)textField
{
if ([textField.text isEqualToString:@""])
{
    return;
}
UIAlertView *helloEarthInputAlert = [[UIAlertView alloc]
                                     initWithTitle:@"Name!" message:[NSString stringWithFormat:@"Message: %@", textField.text]
                                     delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
// Display this message.
[helloEarthInputAlert show];

}

然后我将该文本字段连接到 showInputMessage 并在 iPhone 模拟器中运行它,但是当我输入文本并单击“Enter”时没有任何反应。

提前致谢。从昨晚开始我就一直在玩这种语言。

杰里米

4

2 回答 2

6

为 UITextView 设置委托。

首先声明委托:

@interface YourViewController ()<UITextFieldDelegate>

第二个设置为自己

self.textView.delegate = self;

使用此方法:

-(void)textViewShouldReturn:(UITextField *)textField
{
   if ([textField.text isEqualToString:@""]){
         return;
    }      

    UIAlertView *helloEarthInputAlert = [[UIAlertView alloc]
                           initWithTitle:@"Name!" message:[NSString stringWithFormat:@"Message: %@", textField.text]
                           delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
 // Display this message.
 [helloEarthInputAlert show];

}

要添加属性,请在 h 文件中写入以下代码:

 @property (weak, nonatomic) IBOutlet UITextView *textView;

要连接它,您的文本字段转到情节提要并单击其视图控制器。接下来转到 Connections Inspector(一直在右侧)。在 outlets 下,将 textView 旁边的圆圈拖到您的 textView 上。

于 2013-07-08T14:39:47.753 回答
0

您是否链接了UITextField文件xibstoryboard?我现在看到您有一个 textField 作为参数。你不会得到这样的东西;

在 .h 中执行此操作

IBOutlet UITextField *textFieldTest;

然后将其链接到 xib 或情节提要中

 -(IBAction)showInputMessage
 {
    if ([textFieldTest.text isEqualToString:@""])
    {
      return;
    }
    UIAlertView *helloEarthInputAlert = [[UIAlertView alloc]
                                     initWithTitle:@"Name!" message:[NSString stringWithFormat:@"Message: %@", textFieldTest.text]
                                     delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
// Display this message.
   [helloEarthInputAlert show];

 }
于 2013-07-08T14:35:43.393 回答