кнопка добавления внутри UITextField - PullRequest
2 голосов
/ 19 января 2012

Я работаю над браузерным приложением для iOS и хочу добавить кнопку «Reader» внутри текстового поля строки местоположения, как это делает Mobile Safari, когда обнаруживает, что страница является статьей. Какой хороший способ добавить кнопку справа от UITextField?

Ответы [ 3 ]

4 голосов
/ 08 ноября 2012

Возможно, вы захотите использовать свойство rightView UITextField.По сути, есть два свойства (это и 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

надеюсь, что это поможет. Икак отмечено в другом ответе, сначала проверьте документы, чтобы узнать, какие методы могут вам помочь.

0 голосов
/ 20 января 2012

сначала добавьте 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;
}

наконец, добавьте это к методу обработки url, чтобы кнопка чтения появлялась только тогда, когда страница читаема

   //add your condition
    if( page is pdf or readable )
    {
        readerButton.hidden = NO;
    }
    else
    {
        readerButton.hidden = YES;
    }
0 голосов
/ 19 января 2012

Просто добавьте UIButton и расположите его так, чтобы он перекрывал UITextField там, где вы хотите, и в таком размере, чтобы он помещался "внутри" UITextField.

Пока вы добавляете его в свой вид после добавления UITextField, он будет виден над ним.

...