2015-08-19 43 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方法中。问题立即解决。