即使在ios中滚动后,也在底部设置UIPickerView的位置
我试图在单击即使在ios中滚动后,也在底部设置UIPickerView的位置,ios,uiscrollview,uipickerview,Ios,Uiscrollview,Uipickerview,我试图在单击UITextField时显示UIPickerView。我使用一个简单的方法来显示选择器,如下所示: -(void) showPickerView { [self.view resignFirstResponder]; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.50]; [UIView setAnimationCurve:UIViewAnimatio
UITextField
时显示UIPickerView
。我使用一个简单的方法来显示选择器
,如下所示:
-(void) showPickerView {
[self.view resignFirstResponder];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.50];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;
if(iOSDeviceScreenSize.height == 480){
CGRect frame = self.picker.frame;
frame.origin.y = 270;
self.picker.frame = frame;
frame = self.toolBar.frame;
frame.origin.y = 226.0;
self.toolBar.frame = frame;
} else if(iOSDeviceScreenSize.height == 568){
CGRect frame = self.picker.frame;
frame.origin.y = 239.0;
self.picker.frame = frame;
frame = self.toolBar.frame;
frame.origin.y = 195.0;
self.toolBar.frame = frame;
}
[UIView commitAnimations];
}
如果我没有向下滚动,效果会很好。但当我向下滚动时,我的
选取器
被放置在固定位置,如showPickerView
方法中所述。现在我如何管理它,使我的选择器每次都出现在底部 我可以假设您正在滚动视图中显示选择器,对吗?
如果是这样,那么您的选择器框架是相对于UIScrollView的,而不是相对于屏幕视图的。
因此,您必须考虑滚动视图偏移。诸如此类:
CGRect frame = self.picker.frame;
frame.origin.y = self.scrollvew.contentOffset.y + 270;
否则,您可以在UIScrollView之外显示选择器(只需将其添加到屏幕视图中即可)。解决方案1:
将pickerview添加到窗口中
解决方案2:
执行scrollview委托并连续调整帧
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;
if(iOSDeviceScreenSize.height == 480){
CGRect frame = self.picker.frame;
frame.origin.y = 270;
self.picker.frame = frame;
frame = self.toolBar.frame;
frame.origin.y = 226.0;
self.toolBar.frame = frame;
} else if(iOSDeviceScreenSize.height == 568){
CGRect frame = self.picker.frame;
frame.origin.y = 239.0;
self.picker.frame = frame;
frame = self.toolBar.frame;
frame.origin.y = 195.0;
self.toolBar.frame = frame;
}
}
为什么要更改frame=self.toolBar.frame;又是y值?还有一件事,检查一下你们在委托方法中改变框架的地方,我对选择器和工具栏使用了相同的框架变量。我不会在任何委托方法中更改它。我在需要显示PickerView的地方使用这种方法,只需删除工具栏框架并进行检查。除此之外,这里没有什么复杂的业务逻辑。o/w为toolbar frametoolBar执行另一个CGrect不会影响pickerview。亲爱的,我想你没有明白我的问题。它工作正常,但只有在我没有向下滚动的情况下。但如果我更改textfield委托中的contentOffset,它会出现同样的问题。