【问题标题】:Text entry ios question文字输入ios问题
【发布时间】:2011-04-20 22:53:23
【问题描述】:

我在一个视图中有两个 UILabel,它们将我的乐队和歌曲名称显示为字符串。我正在努力添加手动更改这些字符串中的任何一个的选项。我想保持原样,我添加了 2 个按钮来手动输入歌曲名称或乐队名称。问题是,据我所知,所有文本编辑都需要有实际的 TextField 或 TextView 才能调出键盘等。

我只想触摸一个“输入歌曲名称”按钮并获得一个键盘,当按下回车键时,将 uilabel 中的字符串替换为该字符串,输入乐队名称 uibutton 也是如此,并更改 uilabel再次。

问题出在文档中,我不太了解如何执行此操作。有没有人对 ios 中的文本输入有任何想法,可以给我一个关于如何做到这一点的指针/提示?

【问题讨论】:

    标签: cocoa-touch string ios text


    【解决方案1】:

    只需声明您的标签 Global 并在实现方法中实现 获取数组中的所有歌曲和所有专辑数据 并在表格视图中显示所有数据 现在通过使用

    的委托方法
    • (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 根据需要更改标签的文本
    @interface songViewController ()
    {
    UILabel *bandLabel;
    UILabel *songLabel;
    NSArray *bandData;
    NSArray *songData;
    }
    @end
    @implementation songCreateViewController
    - (void)viewDidLoad {
        [super viewDidLoad];
    {
        bandLabel=[[UILabel alloc]init];
        bandLabel.frame=CGRectMake(40, 580, 500, 30);
        bandLabel.text=@"Join group as";
        [self.view addSubview:bandLabel];
    
        songLabel=[[UILabel alloc]init];
        songLabel.frame=CGRectMake(40, 580, 500, 30);
        songLabel.text=@"Join group as";
        [self.view addSubview:songLabel];
    }
       #pragma mark Table view Delegate
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    { 
        if(tableView==albumTableView)
        {
            bandLabel.text=[bandData objectAtIndex:indexPath.row];
        }
        else
            if(tableView==songTableView)
        {  
           songLabel.text=[songData objectAtIndex:indexPath.row];  
        }
    @end
    

    【讨论】:

    • 这很好,但不是问题想要的正确答案。但如果有人想根据行名更改标签,它会有所帮助。
    【解决方案2】:

    您要做的是将标签替换为文本字段,并将其设置为用户按下按钮时的第一响应者。您将需要一个作为文本字段委托的类,以便您在 textFieldShouldReturn 方法中处理输入以在文本字段上退出第一响应者(以关闭键盘)并将文本字段更改回标签视图并更新其内容。

    【讨论】:

      【解决方案3】:

      可以通过多种方式实现..

      1) 您可以在按钮方法中使用 hidden 来隐藏标签并显示 textView。

      2) 您可以使用 textField 代替标签,设置 textfield.editable=NO 并且按下按钮时只需通过 textfield.text=nil 清除文本字段并使文本字段可编辑。

      试试这些..

      【讨论】:

        猜你喜欢
        • 2018-06-08
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-22
        相关资源
        最近更新 更多