2013-05-20 2 views
0

나는 2 개의 날짜 선택기와 1 개의 단추가 있습니다. 선택기에서 날짜를 선택하면 첫 번째 선택기는 두 번째 선택기 값을 가져옵니다. 첫 번째 선택기에서 19.05.2013을 선택하고 두 번째 선택기에서 20.05.2013을 선택했지만 출력은 다음과 같습니다.첫 번째 날짜 선택 도구가 두 번째 날짜 선택 도구에서 선택한 날짜 값을 가져 오는 이유는 무엇입니까?

출력 로그

< DT1> 2013년 5월 20일 </DT1> 제 선택기

< DT2> 2013년 5월 20일 </DT2> 제 선택기

.H

-(IBAction)Send:(UIButton *)sender; 




@property (nonatomic, retain) IBOutlet UITextField *Date1; 
@property (nonatomic, retain) IBOutlet UITextField *Date2; 

.m

-(IBAction)Send:(UIButton *)sender{ 

    NSString *mensagemSOAP= [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" 
          "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" 
          "<soap:Body>\n" 
          "<UrunToplamiGetir xmlns=\"http://tempuri.org/\">\n" 
          "<dt1>%@</dt1>\n" 
          "<dt2>%@</dt2>\n" 
          "</UrunToplamiGetir>\n" 
          "</soap:Body>\n" 
          "</soap:Envelope>\n",Date1.text,Date2.text]; 


    NSLog(@"SOAP Message= \n%@\n\n", mensagemSOAP); 

    NSURL *url = [NSURL URLWithString:@"http://95.0.50.18:1249/kayit.asmx"]; 
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; 
    NSString *tamanhoMensagem = [NSString stringWithFormat:@"%d", [mensagemSOAP length]]; 

    [theRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
    [theRequest addValue: @"http://tempuri.org/UrunToplamiGetir" 
     forHTTPHeaderField:@"SOAPAction"]; 
    [theRequest addValue:tamanhoMensagem forHTTPHeaderField:@"Content-Length"]; 
    [theRequest setHTTPMethod:@"POST"]; 
    [theRequest setHTTPBody:[mensagemSOAP dataUsingEncoding:NSUTF8StringEncoding]]; 

    NSURLConnection *conexao = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 

    if(conexao){ 
     webData = [NSMutableData data]; 
    }else{ 
     NSLog(@"Connection Error."); 
    } 
} 

- (void)addInputViewToTextField:(UITextField *)textField{ 

    if (!_datePicker) { 
     _datePicker = [[UIDatePicker alloc]init]; 
     //[_datePicker setTag:textField.tag]; 
     [_datePicker setTag:Date1.tag]; 
     [_datePicker setTag:Date2.tag]; 
     [_datePicker setDatePickerMode:UIDatePickerModeDate]; 
     [_datePicker setDate:[NSDate date]]; 
    } 

    Date1.inputView = _datePicker; 
    Date2.inputView=_datePicker; 
    _autocompleteTextField.inputView=nil; 


    if (!_pickerToolBar) { 
     _pickerToolBar =[[UIToolbar alloc]initWithFrame:CGRectMake(0,0, 
                    self.view.frame.size.width,44)]; 
     _pickerToolBar.barStyle =UIBarStyleBlackOpaque; 

     UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] 



             initWithBarButtonSystemItem:UIBarButtonSystemItemCancel 
             target:self 

             action:@selector(cancelButtonPressed:)]; 


     UIBarButtonItem *flexibleSpace =[[UIBarButtonItem 
              alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self 
             action:nil]; 

     UIBarButtonItem *doneButton =[[UIBarButtonItem alloc] 
             initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self 

             action:@selector(doneButtonPressed:)]; 
     [_pickerToolBar setItems:@[cancelButton,flexibleSpace, doneButton]]; 
    } 


    textField.inputAccessoryView = _pickerToolBar; 

} 

-(void)doneButtonPressed:(id)sender{ 

    if (!_dateFormatter) { 
     _dateFormatter = [NSDateFormatter new]; 
     [_dateFormatter setDateFormat:@"dd.MM.yyyy"]; 
    } 

    Date1.text = [_dateFormatter stringFromDate:_datePicker.date]; 
    [Date1 resignFirstResponder]; 
    Date2.text = [_dateFormatter stringFromDate:_datePicker.date]; 
    [Date2 resignFirstResponder]; 

} 

- (void)cancelButtonPressed:(id)sender{ 
    [Date1 resignFirstResponder]; 
    [Date2 resignFirstResponder]; 

} 

- (void)textFieldDidBeginEditing:(UITextField *)textField{ 
    Date1 = textField; 
    Date2 = textField; 

    [self addInputViewToTextField:textField]; 
    [self addInputViewToTextField:textField]; 

} 
-(void)textFieldDidEndEditing:(UITextField *)textField{ 

} 

내 실수는 어디에 있습니까?

답변

0

날짜 선택기가 1 개 있습니다. 이것은 괜찮지 만 2 개의 텍스트 필드를 구별해야합니다. 당신은 완료 버튼을 누르면 날짜와 그 중 하나를 업데이트해야합니다

-(void)doneButtonPressed:(id)sender{ 
    ... 
    UITextField *activeTextField = [Date1 isFirstResponder]?Date1:Date2; // presumably that you only have these 2 textfields 
    activeTextField.text = [_dateFormatter stringFromDate:_datePicker.date]; 
    [activeTextField resignFirstResponder]; 
} 

편집 :
- (void)textFieldDidBeginEditing:(UITextField *)textField에서 두 번째 문제를 발견. Date 필드에 새 값을 할당해서는 안되며 다른 컨트롤입니다. 당신이 그들을 사용하는 방법은 당신이 1 UIDatePicker 2 UITextFields을 가지고 가지 혼란, 당신은 당신의 textfields 사이의 datepicker를 공유해야하지만, 동시에 그들을 사용할 수 없습니다 : 다른

- (void)textFieldDidBeginEditing:(UITextField *)textField{ 
    //[self addInputViewToTextField:textField]; -- not needed, it does the same thing as the call below, textfield value doesn't change between the 2 calls 
    [self addInputViewToTextField:textField]; 
} 

어딘가에 당신

[_datePicker setTag:Date1.tag]; 
[_datePicker setTag:Date2.tag]; 

이 아마 문제가 발생하지 않습니다,하지만 날짜 선택은, 그래서 Date1.tag 값이 그것에서 폐기 한 태그를 가지고 값이 Date2.tag 될 것입니다 그것의 :가.

_datePicker.tag = 1; 
_datePicker.tag = 2; // 1 is discarded and replaced with 2 
+0

은 감사하지만하지 working.It이 같은 problem.When 내가 먼저 날짜와 두 번째 선택 도구를 선택 – CaptainPrice

+0

미안하지 working.Has 처음으로 같은 문제가 있고 두 번째는 동일 :이 비슷합니다. – CaptainPrice

+0

죄송합니다. 게시 한 코드에서 찾을 수있는 모든 문제가 있습니다. –

관련 문제