1

UITextViewiPhoneアプリに2つあります。ユーザーが1つを選択UITextViewすると、コントローラーは自動的に別のコントローラーに移動しますUITextView。私は自分のプロジェクトで次の方法を試しました。ただし、2番目は、ユーザーが2番目の内側をクリックするまで実行されUITextViewません。becomefirstresponderUITextView

 -(void) viewDidLoad
{   
    TextView1 = [[UITextView alloc] initWithFrame:CGRectMake(10, 320, 300, 50)];
    TextView1.delegate = self;
    TextView1.backgroundColor = [UIColor clearColor];
    TextView1.layer.borderWidth = 2;
    TextView1.layer.borderColor = [UIColor blackColor].CGColor;
    TextView1.layer.cornerRadius = 5;
    [self.view addSubview: TextView1];

    TextView2 = [[UITextView alloc] initWithFrame:CGRectMake(10, 5, 300, 30)];
    TextView2.delegate = self;
    TextView2.backgroundColor = [UIColor whiteColor];
    TextView2.layer.borderWidth = 2;
    TextView2.layer.borderColor = [UIColor lightTextColor].CGColor;
    TextView2.layer.cornerRadius = 5;
    [self.view addSubview: TextView2];

    UIBarButtonItem *textBarButton = [[UIBarButtonItem alloc] initWithCustomView: TextView2];

    accessoryToolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    accessoryToolBar.items = [NSArray arrayWithObjects:textBarButton, nil];
}

 -(BOOL) textViewShouldBeginEditing:(UITextView *)textView
{
    NSLog(@"TextView Should Begin Editing");
    if (textView == messageTextView) 
    {
        [TextView2 setInputAccessoryView:accessoryToolBar];
        [TextView1 resignFirstResponder];
        [TextView2 becomeFirstResponder];
    }
    else
    {
        [TextView2 setInputAccessoryView:accessoryToolBar];
        [TextView1 resignFirstResponder];
    }

    return YES;
}

どうすればこれを修正できますか?

4

1 に答える 1

1

textViewShouldBeginEditing完全なメソッドを削除します。それは間違った点です。

ユーザーが最初のtextViewに触れるとすぐに、2番目のtextViewを選択する必要がありますね。それが必要な場合は、textViewDidBeginEditing:代わりに使用してください。

- (void) textViewDidBeginEditing:(UITextView *)textView
{
  if(textView == TextView1) {
    [TextView2 becomeFirstResponder];
  }
}

それはあなたが必要とするすべてでなければなりません。

于 2012-07-14T11:37:37.947 に答える