2015-08-19 88 views
0

在我加載的初始視圖控制器中,我的一個子視圖是UITextField。我還有其他主視圖子視圖(即四個標籤,一個pickerview和兩個按鈕)。當我嘗試編輯文本框時,所有其他子視圖都會右移。我不知道爲什麼會發生這種情況。即使應用編輯文本框時發生的情況,我也沒有代碼。但是,我確實有一些代碼可以對齊我所有的子視圖(包括文本框)。下面是該代碼:iPhone - 編輯UITextField將其他視圖向右移動

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.stopPickerView.dataSource = self; 
    self.stopPickerView.delegate = self; 
    [email protected]""; 
    self.inputField.delegate=self; 

    // Do any additional setup after loading the view, typically from a nib. 



} 

-(void)viewDidAppear:(BOOL)animated{ 

    int width=self.view.bounds.size.width; 
    int height=self.view.bounds.size.height; 

    headingLabel.frame=CGRectMake(headingLabel.frame.origin.x, headingLabel.frame.origin.y,self.view.bounds.size.width-self.view.bounds.size.width/5, headingLabel.frame.size.height); 
    headingLabel.center=CGPointMake(width/2,height/9); 


    stopPickerView.center=CGPointMake(width/2, height/5); 
    setStop.center=CGPointMake(width/2, height/2.2); 
    orLabel.center=CGPointMake(width/2, height/1.7); 
    wakeUpLabelOne.frame=CGRectMake(wakeUpLabelOne.frame.origin.x, wakeUpLabelOne.frame.origin.y,self.view.bounds.size.width-self.view.bounds.size.width/2, self.view.bounds.size.height-self.view.bounds.size.height/19.2); 


      wakeUpLabelOne.center=CGPointMake(width/3.5, height/1.4); 
    NSLog(@"%f",wakeUpLabelOne.frame.size.width); 
    wakeUpLabelTwo.center=CGPointMake(width/1.1, height/1.4); 
    inputField.center=CGPointMake(width/1.5, height/1.4); 
    finalSetButton.center=CGPointMake(width/2, height/1.2); 
    [wakeUpLabelTwo adjustsFontSizeToFitWidth]; 


} 

- (int)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 1; 
} 

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { 

    selectedEntry = [_pickerData objectAtIndex:row]; 

} 

// The number of rows of data 
- (int)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    return _pickerData.count; 
} 

// The data to return for the row and component (column) that's being passed in 
- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    return _pickerData[row]; 
} 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [inputField resignFirstResponder]; 
} 

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return NO; 
} 

如果您有任何想法,爲什麼發生這種情況,或者您想了解更多的信息,只要把它的意見。

+1

你放置了哪個框架配置?請儘可能提供完整的代碼。如果你不介意我問,難道你不能僅僅使用約束來保持你的觀點一致嗎? – Teffi

+0

@Teffi我將框架配置放在viewDidAppear塊中。我在上面添加了更多代碼(但我不確定這會有所幫助)。此外,我嘗試使用約束,但我無法讓它在所有屏幕尺寸上正常工作。十分感謝你的幫助。 – user2779450

回答

0

我想通了這是爲什麼發生。出於某種原因,將我的框架配置放在viewDidAppear方法中是一個糟糕的主意,並且搞砸了一些東西。解決這個問題的方法是將我的框架配置放入viewDidLayoutSubviews方法中。問題立即解決。