我想在UITextView上使用addTarget:action,例如on(UITextField或UIButton)。
我想在UITextView上调用一个方法。
请给出一些可能的解决方案......
谢谢......
UITextView *TXT_First_Tag = [[UITextView alloc] initWithFrame:CGRectMake(5, textPosY, 350, 65)];
TXT_First_Tag.backgroundColor = [UIColor whiteColor];
TXT_First_Tag.font = [UIFont fontWithName:@"Arial-BoldMT" size:30.0];
TXT_First_Tag.editable =YES;
TXT_First_Tag.tag = i;
TXT_First_Tag.textColor = [UIColor blackColor];
[TXT_First_Tag addTarget:self action:@selector(C6Loop) forControlEvents:UIControlEventEditingDidEnd]; // This Line I want to use, it's working fine on textfield...
[scrollview addSubview:TXT_First_Tag];
答案 0 :(得分:11)
我们为此目的使用UITextView委托方法。
将其放入您的代码中。
UITextView *TXT_First_Tag = [[UITextView alloc] initWithFrame:CGRectMake(5, textPosY, 350, 65)];
TXT_First_Tag.backgroundColor = [UIColor whiteColor];
TXT_First_Tag.font = [UIFont fontWithName:@"Arial-BoldMT" size:30.0];
TXT_First_Tag.editable =YES;
TXT_First_Tag.delegate = self;
TXT_First_Tag.tag = i;
TXT_First_Tag.textColor = [UIColor blackColor];
[scrollview addSubview:TXT_First_Tag];
- (void)textViewDidBeginEditing:(UITextView *)textView{
NSLog(@"Begin editing");
}
- (void)textViewDidEndEditing:(UITextView *)textView{
NSLog(@"DidEndEditing");
}
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView{
NSLog(@"ShouldBeginEditing");
return TRUE;
}
- (BOOL)textViewShouldEndEditing:(UITextView *)textView{
NSLog(@"ShouldEndEditing");
return TRUE;
}
答案 1 :(得分:3)
如果你的控制器实现了UITextViewDelegate
协议,你可以在控制器的实例方法viewDidLoad()
中将控制器设置为文本视图的委托:
yourTextView.delegate = self;
然后,如果您想在编辑文字视图之前执行任务,请使用:
-(void)textViewDidBeginEditing:(UITextView *)textView {}
并且,如果您想在编辑文字视图后执行任务,请使用:
-(void)textViewDidEndEditing:(UITextView *)textView {}
答案 2 :(得分:0)
当然,通过实施UITextViewDelegate
来获得“编辑结束”消息的更好方法是什么?
TXT_First_Tag.delegate = self;
...
- (void)textViewDidEndEditing:(UITextView *)textView {
// stuff you'd put in C6Loop
答案 3 :(得分:0)
CHAPS, 尽管你的回答没有直接解决我的问题,但它帮助我缩小了范围。
我在每个单元格中都有文本视图,需要传递正在编辑的文本视图,以便我可以更新数据库。
简而言之,我将每个单元格中的每个textview标记都设置为indexpath.row。然后我通过textview.tag
在委托中引用该单元格 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *MyIdentifier = @"MyIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil)
{
[[NSBundle mainBundle] loadNibNamed:@"frontCell" owner:self options:nil];
cell = mainPageCell;
self.mainPageCell = nil;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
UITextView *trackDetails;
trackDetails = (UITextView *)[cell viewWithTag:22];
trackDetails.text = [[myArray objectAtIndex:indexPath.row] objectAtIndex:0];
trackDetails.delegate = self;
trackDetails.tag = indexPath.row;
}
- (void)textViewDidEndEditing:(UITextView *)textView
{
NSLog(@"%d",textView.tag);
UPDATE DATABASE WITH CHANGED TEXT
[textView resignFirstResponder];
[self.tableView reloadData];
}