我遇到了一个愚蠢的事情: 我有一个带导航栏和表视图的视图。 我的导航栏有一个“搜索”左按钮。 当用户按下这个“搜索”按钮时,我希望我的桌面视图关闭,并且我的导航栏和我的桌面视图之间有一个专用于搜索的新视图。
我有一个只需实现UITextfield的视图控制器:
#import <UIKit/UIKit.h>
@interface serachBox : UIViewController <UITextFieldDelegate> {
IBOutlet UITextField *kWTextField;
}
@end
我的其他视图控制器有我的元素(导航栏,表格栏......)。这是我在按下搜索按钮时使用的功能:
- (void) pressSearchBtn:(id)sender{
[searchBox.view setFrame:CGRectMake(0, -100, 320, 100)];
CGRect theFrame = self.view.frame;
[UIView beginAnimations:@"frame" context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationDelegate:self];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
theFrame.origin.y = 100;
[self.view addSubview:searchBox.view];
self.view.frame = theFrame;
[UIView commitAnimations];
}
我的问题:我的搜索框视图显示效果不错,但是当我点击它时,她的文本字段没有响应。我测试了一个简单的添加子视图(没有执行动画的东西)并且它可以工作。
怎么回事?
答案 0 :(得分:0)
嘿,在最后的pressSearchBtn动作中添加这个。
[kWTextField becomeFirstResponder];
答案 1 :(得分:0)
或者你可以这样做。在Interface Builder中,将文本字段放在视图顶部而不是视图之外。把它放在(0,0)大小(320,31)。然后在tools-&gt;属性检查器中检查textfield的hidden属性为true。然后在buttonClick中输入此代码。
- (void) pressSearchBtn:(id)sender{
kwtextField.alpha = 0;
[UIView beginAnimations:@"frame" context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationDelegate:self];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
kwtextField.hidden = FALSE;
kwtextField.alpha = 1;
[UIView commitAnimations];
}
答案 2 :(得分:0)
嘿,我终于为你完成了它。
将文本字段放在界面构建器的任何位置,将其隐藏在工具中 - &gt;属性检查员。
在viewDidLoad方法中执行此操作
- (void)viewDidLoad {
CGRect frame = CGRectMake(0, -100, 320, 580);
self.view.frame = frame;
text.frame = CGRectMake(0, self.view.frame.origin.y, 320, 100);
[super viewDidLoad];
}
然后在btnClick方法中写下这个。
-(IBAction) btnClicked: (id) sender
{
CGRect frame1 = CGRectMake(0, 0, 320, 100);
text.hidden = FALSE;
CGRect frame = self.view.frame;
[UIView beginAnimations:@"frame" context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationDelegate:self];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
frame.origin.y = 0;
self.text.frame = frame1;
self.view.frame = frame;
[UIView commitAnimations];
}
欢呼声!!!