Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS6中的UITextField后台属性问题_Ios_Objective C_Ios6_Background_Uitextfield - Fatal编程技术网

iOS6中的UITextField后台属性问题

iOS6中的UITextField后台属性问题,ios,objective-c,ios6,background,uitextfield,Ios,Objective C,Ios6,Background,Uitextfield,我想创建UITextField,它在普通视图中看起来像一个标签,在编辑模式下像一个带有自定义背景的文本字段。我在XIB中添加了一个“无边框样式”UITextField,并将插座设置为namenamextfield。我已经在编辑模式下为UITextField设置了背景,并在按钮事件的查看模式下为nil背景设置了背景,但是图像在iOS 6.x中第一次消失后没有出现,其他一切都正常工作。我已经在iOS 7.x中进行了测试,它的工作原理与预期一致。代码如下所示 - (IBAction)editButto

我想创建
UITextField
,它在普通视图中看起来像一个标签,在编辑模式下像一个带有自定义背景的文本字段。我在XIB中添加了一个“无边框样式”
UITextField
,并将插座设置为name
namextfield
。我已经在编辑模式下为
UITextField
设置了背景,并在按钮事件的查看模式下为
nil
背景设置了背景,但是图像在iOS 6.x中第一次消失后没有出现,其他一切都正常工作。我已经在iOS 7.x中进行了测试,它的工作原理与预期一致。代码如下所示

- (IBAction)editButtonTapped:(id)sender
{
    editMode = !editMode;
    if (editMode)
    {
        nameTextField.background = [UIImage imageNamed:@"textbg.png"];
        nameTextField.enabled = YES;
    }
    else
    {
        nameTextField.background = nil;
        nameTextField.enabled = NO;
    }
}
测试用例:

  • 点击编辑按钮,启用编辑和显示背景->显示背景和字段 已按预期启用
  • 再次点击编辑按钮,禁用编辑并隐藏背景->背景按预期消失
  • 再次点击编辑按钮,以启用编辑和显示背景->字段已启用编辑,但没有背景。
  • 试着这样做

    在界面生成器中,就在设置背景图像的位置下方,应该有一个选择边框样式的选项,默认情况下,它被选择为RoundedRect,选择另一个样式,您可以立即看到背景图像。

    谢谢您的评论

    我认为这是一个iOS 6.x错误;如果UITextField的背景属性在视图出现时或之后设置为nil,则不会绘制对背景属性的后续更改

    此问题的解决方法是使用空白透明图像,而不是零。图像可以通过以下两种方式之一使用:

    1)通过代码设置背景(textbg.png和blank_image.png);然后代码看起来像

    - (IBAction)editButtonTapped:(id)sender
    {
        editMode = !editMode;
        if (editMode)
        {
            nameTextField.background = [UIImage imageNamed:@"textbg.png"];
            nameTextField.enabled = YES;
        }
        else
        {
            nameTextField.background = [UIImage imageNamed:@"blank_image.png"];
            nameTextField.enabled = NO;
        }
    }
    
    - (IBAction)editButtonTapped:(id)sender
    {
        editMode = !editMode;
        if (editMode)
        {
            nameTextField.enabled = YES;
        }
        else
        {
            nameTextField.enabled = NO;
        }
    }
    
    2)在XIB中设置背景(textbg.png)和禁用背景(blank_image.png);然后代码看起来像

    - (IBAction)editButtonTapped:(id)sender
    {
        editMode = !editMode;
        if (editMode)
        {
            nameTextField.background = [UIImage imageNamed:@"textbg.png"];
            nameTextField.enabled = YES;
        }
        else
        {
            nameTextField.background = [UIImage imageNamed:@"blank_image.png"];
            nameTextField.enabled = NO;
        }
    }
    
    - (IBAction)editButtonTapped:(id)sender
    {
        editMode = !editMode;
        if (editMode)
        {
            nameTextField.enabled = YES;
        }
        else
        {
            nameTextField.enabled = NO;
        }
    }
    

    你可以分享文本框的屏幕截图吗?嗨,我已经选择了“无边框样式”文本框,并通过代码设置了背景(已发布)。我试着用XIB设置背景。如果我第一次按预期点击背景消失,但如果我再次点击,图像不会出现。此问题来自设备或模拟器?同时在设备和模拟器上出现。请尝试此操作,删除nameTextField.background=nil;并替换nameTextField.background=[UIImage ImageName:@”“;我们现在使用的是iOS 12,但我刚刚遇到了一个类似的行为,即设置
    UITextField
    的背景色效果很好。但是,隐藏视图并再次显示将产生意外结果(背景消失或alpha通道更改)。使用一个图像,而不是建议在这里修复它。