【发布时间】: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