我的iPhone应用程序中有两个UITextView
。当用户选择一个UITextView
时,控制器会自动转到另一个UITextView
。我在项目中尝试了以下方式。但是第二个UITextView
不会becomefirstresponder
,直到用户在第二个UITextView
中单击。
-(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;
}
我怎样才能解决这个问题?
最佳答案
删除完整的textViewShouldBeginEditing
方法。这是错误的观点。
您想要,一旦用户触摸第一个textView,就应该选择第二个,对吧?如果这是您想要的,请改为使用textViewDidBeginEditing:
。
- (void) textViewDidBeginEditing:(UITextView *)textView
{
if(textView == TextView1) {
[TextView2 becomeFirstResponder];
}
}
那应该是您需要的一切。