我想点击UIPickerView
时显示UITextField
。我使用一种简单的方法来显示picker
,如下所示:
-(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];
}
如果我没有向下滚动,它会很有效。但是当我向下滚动时,我的picker
被放置在showPickerView
方法中提到的固定位置。现在我如何管理我的picker
每次出现在底部。
答案 0 :(得分:2)
解决方案1:
将您的选择视图添加到您的窗口。
解决方案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;
}
}
答案 1 :(得分:1)
我可以假设您在滚动视图中显示您的选择器,对吧? 如果是这样,那么您的选择器框架相对于UIScrollView而不是屏幕视图。 所以你必须考虑你的滚动视图偏移。这样的事情:
CGRect frame = self.picker.frame;
frame.origin.y = self.scrollvew.contentOffset.y + 270;
否则,您可以在UIScrollView之外显示您的选择器(只需将其添加到屏幕视图)。