【问题标题】:Image in UITextField rightView not appearingUITextField rightView中的图像没有出现
【发布时间】:2011-03-23 21:27:21
【问题描述】:

我有这段代码可以将 26 x 30 .png 文件添加到 UITextField 的右视图中。

//add button to address bar
//UIButton *refreshButton = [UIButton buttonWithType:UIButtonTypeInfoDark];
UIButton *refreshButton = [UIButton buttonWithType:UIButtonTypeCustom];
[refreshButton setImage:[UIImage imageNamed:@"refresh.png"] forState:UIControlStateNormal];
[refreshButton setImage:[UIImage imageNamed:@"refresh.png"] forState:UIControlStateHighlighted];
refreshButton.imageEdgeInsets = UIEdgeInsetsMake(0, -16, 0, 0);
[refreshButton addTarget:self action:@selector(refresh) forControlEvents:UIControlEventTouchUpInside];
addressBar.rightView = refreshButton;
addressBar.rightViewMode = UITextFieldViewModeUnlessEditing;

按钮是可触摸的,并调用了它应该调用的方法,但图像没有显示。

有什么想法吗?可能是图像对于文本字段来说太大了吗?我的文本字段是我从 IB 拖入的标准大小,所以我不认为是这样,但这是一个想法。

文本字段为 245 x 31

【问题讨论】:

  • refreshButton.imageEdgeInsets = UIEdgeInsetsMake(0, -16, 0, 0); 这确实帮助了我的问题,我添加了一个自定义样式的 UIButton。但立场不正确。谢谢老兄!
  • 提示:对于一个大图像(因此也是一个大 imageEdgeInset),您可能会发现(就像我所做的那样),即使您触摸它正确突出显示的按钮,UIControlEventTouchUpInside 也不会触发。原来我已经将图像偏移到按钮“内部”的边界之外。不情愿地覆盖了 UITextField 子类中的 rightViewRectForBounds 方法,为它提供了我放置在 UITextfield 的 rightView 中的 UIButton 的确切大小,删除了 imageEdgeInsets,现在一切正常。

标签: iphone objective-c xcode


【解决方案1】:

您是否尝试过在初始化 UIButton 时指定一个框架,而不是使用类方法 buttonWithType。我猜如果没有它,文本字段将无法确定按钮的大小。

[[UIButton alloc] initWithFrame:CGRectMake(0, 0, width, height)]

【讨论】:

    【解决方案2】:

    在文本文件中添加右视图或左视图应该在为文本字段添加文本或提示之前进行,这是我这边的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多