0

我遇到了一件愚蠢的事情:我有一个带有导航栏和表格视图的视图。我的导航栏有一个“搜索”左键。当用户按下这个“搜索”按钮时,我希望我的表格视图下降,一个专门用于搜索的新视图出现在我的导航栏和表格视图之间。

  • 我有一个简单地实现 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];
    
    }
    

我的问题:我的搜索框视图看起来不错,但是当我单击它时她的文本字段没有响应。我测试了一个简单的添加子视图(不执行动画),它可以工作。

有什么事 ?

4

3 回答 3

0

嘿,我终于为你完成了。

将文本字段放在界面构建器上的任何位置,将其隐藏在工具 -> 属性检查器中。

在您的 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];

}

干杯!!!

于 2011-03-14T19:30:21.930 回答
0

或者你可以这样做。在 Interface Builder 中,将文本字段放在视图的顶部,而不是视图之外。将其放在 (0,0) 处,大小为 (320,31)。然后在工具->属性检查器中检查文本字段的隐藏属性是否为真。然后在 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];
}
于 2011-03-14T15:38:57.590 回答
0

嘿,将其添加到最后的 pressSearchBtn 操作中。

[kWTextField 成为FirstResponder];

于 2011-03-14T15:20:58.817 回答