2013-01-18 17 views
15

Wenn ich in das Textfeld klicke, wie kann ich die Schaltfläche plus zu UITextField hinzufügen, wie im folgenden Bildschirm gezeigt? Wenn Sie auf diese Schaltfläche klicken, wird die iPhone-Kontaktanwendung gestartet. Ich würde jedes Code-Beispiel sehr schätzen. DankSchaltfläche zu uitextfield hinzufügen

enter image description here

+3

, warum die nach unten Abstimmung? –

Antwort

8

Verwenden folgende Methode für UIButton hinzufügen

[self.txtField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; 

- (BOOL) textFieldDidChange:(UITextField *)textField 
{ 
    UIButton *btnColor = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [btnColor addTarget:self action:@selector(btnColorPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    btnColor.frame = CGRectMake(self.txtTag.bounds.size.width - 50, 5, 25, 25); 
    [btnColor setBackgroundImage:[UIImage imageNamed:@"PaintPickerButton.png"] forState:UIControlStateNormal]; 
    [self.txtTag addSubview:btnColor]; 

    return YES; 
} 

Oder schreiben

-(BOOL) textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 
    [UIView setAnimationDuration:0.3f]; 
    // self.scrollView.frame = CGRectMake(0, 35, self.view.bounds.size.width, self.view.bounds.size.height - 250); 
    [UIView commitAnimations]; 

    UIButton *btnColor = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [btnColor addTarget:self action:@selector(btnColorPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    btnColor.frame = CGRectMake(150, 5, 25, 25); 
    [btnColor setBackgroundImage:[UIImage imageNamed:@"PaintPickerButton.png"] forState:UIControlStateNormal]; 
    [self.txtField addSubview:btnColor]; 

    return YES; 
} 
+0

Warum verwenden Sie self.scrollView.frame = CGRectMake (0, 35, self.view.bounds.size.width, self.view.bounds.size.height - 250); – pengwang

+0

@ pengwang- sory Ich kopiere Code aus meinem Projekt, so dass ich diese Zeile lösche :) – iPatel

+4

Manuelles Hinzufügen eines eigenen UIButton ist nicht akzeptabel, wenn das Textfeld aktiv wird, wird die Schaltfläche an den Hintergrund gesendet und nicht zu tappbar sein! Die beste Lösung ist die Eigenschaft 'rightView' –

8

Code Verwendung Nach für das Hinzufügen von Schaltfläche in UITextField.

-(void)ViewDidLoad{ 
    UITextField *txt = [[UITextField alloc]initWithFrame:CGRectMake(140, 120, 160, 40)]; 
    txt.returnKeyType = UIReturnKeyDone; 
    txt.placeholder = @"Enter or Mobile Number"; 
    [txt setBorderStyle:UITextBorderStyleRoundedRect]; 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setImage:[UIImage imageNamed:@"crossImg.png"] forState:UIControlStateNormal]; 
    button.imageEdgeInsets = UIEdgeInsetsMake(0, -16, 0, 0); 
    [button addTarget:self action:@selector(clearText:) forControlEvents:UIControlEventTouchUpInside]; 
    txt.rightView = button; 
    txt.rightViewMode = UITextFieldViewModeAlways; 
    [self.view addSubview:txt]; 
} 

-(IBAction)clearText:(id)sender{ 

} 
3

Verwenden rightView Eigenschaft UITextField. In textFieldDidBeginEditing: Delegate erstellen Schaltfläche mit Aktion, die Sie möchten & auf rightView festgelegt. Und in textFieldDidEndEditing: set nil zu rightView

1

können Sie auch für benutzerdefinierte Ansicht Ant gehen und dann Unteransicht hinzufügen. dann versteckst du es. es wird nur angezeigt, wenn der Benutzer es tippt

9

Sie können den Code unten für diesen Einsatz:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    if(textField == yourFirstTextField) 
    { 
     UIButton *addButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
     [addButton setImage:[UIImage imageNamed:@"addImage.png"] forState:UIControlStateNormal]; 
     [addButton addTarget:self action:@selector(yourActionHere) forControlEvents:UIControlEventTouchUpInside]; 
     textField.rightViewMode = UITextFieldViewModeWhileEditing; 
     textField.rightView = addButton; 
    } 
} 

Sie können das obige Verfahren verwenden, wenn Sie das Feld in IB hinzugefügt.

Wenn Sie es durch Code erstellt werden, müssen Sie den folgenden Code hinzufügen beim Erstellen:

UIButton *addButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[addButton setImage:[UIImage imageNamed:@"addImage.png"] forState:UIControlStateNormal]; 
[addButton addTarget:self action:@selector(yourActionHere) forControlEvents:UIControlEventTouchUpInside]; 
textField.rightViewMode = UITextFieldViewModeWhileEditing; 
textField.rightView = addButton; 
0
self.locationName.clearButtonMode = UITextFieldViewModeWhileEditing; 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    button.frame = CGRectMake(0, 0, 30, 30); 
    [button setImage:[UIImage imageNamed:@"goButtonIcon.png"] forState:UIControlStateNormal]; 
    [button addTarget:self action:@selector(goButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; 

    self.locationName.rightView = button; 
    self.locationName.rightViewMode = UITextFieldViewModeUnlessEditing; 

und dann diese Methode aufrufen:

-(IBAction)goButtonClicked:(id)sender{ 

} 

self.locationName -------> UITextField Reference (in viewDidLoad können Sie diesen Code schreiben)

Verwandte Themen