我正在开发适用于iOS的浏览器应用,并希望在位置栏的文本字段内添加“阅读器”按钮,就像Mobile Safari在检测到该页面是文章时所做的那样。 在UITextField的右侧添加按钮的好方法是什么?
答案 0 :(得分:4)
您可能希望使用UITextField的rightView
属性。基本上,有两个属性(相应地这一个和leftView
)允许您在UITextField中放置自定义视图/控件。您可以通过rightViewMode
/ leftViewMode
属性控制是否显示这些视图:
UIButton *myButton = [UIButton new];
// configure your button here
myTextField.rightView = myButton;
myTextField.rightViewMode = UITextFieldViewModeUnlessEditing; // check the docs for other possible values
此外,还有一个名为rightViewRectForBounds:
的方法,它返回自定义视图/控件所在的CGRect。你不应该直接在那里传递你的按钮的尺寸,而是如果你想要放置一个肯定比这个方法返回的矩形更大的东西(看起来像UITextField在你放置一个视图时代表你调用它),你的视图将缩放以适合这个矩形。在这种情况下你可能想要覆盖它(创建你的类别或UITextField的子类。假设,你去找一个类别,你的UITextField + MyButton应该是这样的:
@interface UITextField(MyButton)
- (CGRect)rightViewRectForBounds:(CGRect)bounds;
@end
@implementation UITextField(MyButton)
- (CGRect)rightViewRectForBounds:(CGRect)bounds
{
// return the CGRect that would fit your view/button. The buttons param that is passed here is the size of the view that is being added to the textField.
}
// possibly some other methods that you override
@end
希望这会有所帮助。正如另一个答案中所述,首先检查文档以了解哪些方法可以帮助您。
答案 1 :(得分:0)
只需添加UIButton
并对其进行定位,使其与UITextField
重叠,无论您想要的位置是什么,其大小都会使其“适合”UITextField
。
只要您在添加UITextField
后将其添加到视图中,它就会在其上方显示。
答案 2 :(得分:0)
首先,在头文件
上实现您的UIButton·H
@properties (nonatomic, strong) UIButton *headerButton;
然后是实现文件(.m)
@synthesize headerButton;
- (void)viewDidLoad
{
UITextField *urlField = [[UITextField alloc]initWithFrame:CGRectMake(10, 10, 100, 20)];
//your url processing code here
//...
//...
//...
[self.view addSubview:urlField];
//declare your reader button
readerButton = [[UIButton alloc]initWithFrame:CGRectMake(70, 10, 25, 20)];
[readerButton addTarget:self action:@selector(readerButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
readerButton.hidden = YES;
}
最后将此添加到ur url处理方法,以便只有在页面可读时才会显示阅读器按钮
//add your condition
if( page is pdf or readable )
{
readerButton.hidden = NO;
}
else
{
readerButton.hidden = YES;
}