设置委托时,可以单击textView

时间:2014-04-08 08:13:09

标签: ios objective-c cocoa-touch uitextview

我的应用程序有2个视图,并且在覆盖视图上有一个UITextView和一个UIButton旁边。
当TextView应该变小时点击按钮(从CGRectMake(0, 50, self.view.frame.bounds.size.width, 100)

CGRectMake(0, 50, self.view.frame.bounds.size.width, 50)),然后在第二次点击时它会再次变大。
以下是我如何管理这个问题的代码:

-(IBAction)buttonTouched:(id)sender {
    if(counter == 1) {
    [self.textView removeFromSuperview];
    self.textView = nil;
    self.textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 50, self.view.frame.bounds.size.width, 50)];
    [self.overlayView addSubview:self.textView];
    counter = 2;
    } else {
        [self.textView removeFromSuperview];
        self.textView = nil;
        self.textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 50, self.view.frame.bounds.size.width, 100)];
        [self.overlayView addSubview:self.textView];
        counter = 1;
    }
}

我的问题是,当我这样做时,我无法在不设置委托的情况下处理像textViewDidBeginEditing:(UITextView *)textView这样的UITextView的委托方法。但是当我在重新创建TextView之后设置像self.textView.delegate = self这样的委托时,单击它时没有任何反应。没有键盘出现,也没有调用事件。 有什么建议吗?

3 个答案:

答案 0 :(得分:1)

alloc

中尝试ViewDidLoad textView
self.textView = [[UITextView alloc]init];

and on the button click use

[self.textView setFrame:CGRectMake(0, 50, self.view.frame.bounds.size.width, 50)];

and 

[self.textView setFrame:CGRectMake(0, 50, self.view.frame.bounds.size.width, 100)];

答案 1 :(得分:0)

试试这个,

addSubview中初始化和self.textView viewDidLoad并设置self.textView.delegate = self;

-(IBAction)buttonTouched:(id)sender {
    if(counter == 1) {

    self.textView.frame = CGRectMake(0, 50, self.view.frame.bounds.size.width, 50);
    counter = 2;
    } else {

        self.textView.frame = CGRectMake(0, 50, self.view.frame.bounds.size.width, 100);
        counter = 1;
    }
    [self.overlayView bringSubviewToFront:self.textView];
}

只需更改self.textView

buttonTouched:的框架即可

答案 2 :(得分:0)

-(IBAction)buttonTouched:(id)sender {
    if(counter == 1) {
    [self.textView removeFromSuperview];
    self.textView = nil;
    self.textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 50, self.view.frame.bounds.size.width, 50)];
    [self.overlayView addSubview:self.textView];
    counter = 2;
    } else {
        [self.textView removeFromSuperview];
        self.textView = nil;
        self.textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 50, self.view.frame.bounds.size.width, 100)];
        [self.overlayView addSubview:self.textView];
        counter = 1;
    }
}
  • 在上面的代码中,只更改“self.view.bound.size.width”的“self.view.bounds.size.width”。
  • 在.h文件中之前分配委托“self.textView.delegate = self” @interface ViewController:UIViewController