私のアプリケーションでは、UIButton クリックで、複数の UIButton を動的に作成し、そのメソッドを実行する必要があります。
作成したUIButtonsから特定のUIButtonを削除するには? バックスペースキーを押すか、削除キーを押すか?または、UIButton を削除する他の方法はありますか?
作成用の私のソースコード
.h ファイル内
NSMutableArray *selectedBtnarr;
.m ファイルで
-(void)Check
{
CGPoint origin = note.frame.origin;
NSString* head = [note.text substringToIndex:note.selectedRange.location];
CGSize initialSize = [head sizeWithFont:note.font constrainedToSize:note.contentSize];
NSUInteger startOfLine = [head length];
NSString* tail = [head substringFromIndex:startOfLine];
CGSize lineSize = [tail sizeWithFont:note.font forWidth:note.contentSize.width lineBreakMode:UILineBreakModeWordWrap];
CGPoint cursor = origin;
cursor.x += lineSize.width + 15;
cursor.y += initialSize.height - lineSize.height - 130;
checkbox = [[UIButton alloc] initWithFrame:CGRectMake(cursor.x,cursor.y,15,15)];
[checkbox setBackgroundImage:[UIImage imageNamed:@"unchk.png"]forState:UIControlStateNormal];
[checkbox setBackgroundImage:[UIImage imageNamed:@"chk.png"]forState:UIControlStateSelected];
[checkbox setBackgroundImage:[UIImage imageNamed:@"chk.png"]forState:UIControlStateHighlighted];
checkbox.adjustsImageWhenHighlighted=YES;
[checkbox setTag:checkButtonCount];
[checkbox addTarget:self action:@selector(ChkUnChk:) forControlEvents:UIControlEventTouchUpInside];
[note addSubview:checkbox];
NSString *xAxis=[NSString stringWithFormat:@"%f" ,checkbox.frame.origin.x];
NSString *yAxis=[NSString stringWithFormat:@"%f" ,checkbox.frame.origin.y];
[chkBoxX addObject:xAxis];
[chkBoxY addObject:yAxis];
NSString *tag=[NSString stringWithFormat:@"%d" ,checkButtonCount];
[chkTag addObject:tag];
checkButtonCount=checkButtonCount+1;
}
-(void)ChkUnChk:(id)sender
{
UIButton *btn=(UIButton *)sender;
NSString *Str=[NSString stringWithFormat:@"%d",btn.tag];
BOOL flag= [selectedBtnarr containsObject:Str];
if (flag==YES)
{
[btn setBackgroundImage:[UIImage imageNamed:@"unchk.png"] forState:UIControlStateNormal];
[selectedBtnarr removeObject:Str];
}
else
{
[selectedBtnarr addObject:Str];
[btn setBackgroundImage:[UIImage imageNamed:@"chk.png"] forState:UIControlStateNormal];
}
}
しかし、私はこれを削除する方法を知りません...
私のコードを削除するには以下にあります
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
const char * _char = [text cStringUsingEncoding:NSUTF8StringEncoding];
int isBackSpace = strcmp(_char, "\b");
if (isBackSpace == -8)
{
NSLog(@"backspace Detected");
CGPoint origin = note.frame.origin;
NSString* head = [note.text substringToIndex:note.selectedRange.location];
CGSize initialSize = [head sizeWithFont:note.font constrainedToSize:note.contentSize];
NSUInteger startOfLine = [head length];
NSString* tail = [head substringFromIndex:startOfLine];
CGSize lineSize = [tail sizeWithFont:note.font forWidth:note.contentSize.width lineBreakMode:UILineBreakModeWordWrap];
CGPoint cursor = origin;
cursor.x += lineSize.width + 15;
cursor.y += initialSize.height - lineSize.height - 130;
NSLog(@"Cursor Place X : %f Y: %f",cursor.x,cursor.y);
int tagcoount=[chkTag count];
for(int a=0;a<tagcoount;a++)
{
NSString *tag=[NSString stringWithFormat:@"%@" ,[chkTag objectAtIndex:a]];
int chkcnt=[tag intValue];
if(cursor.x==checkbox.frame.origin.x && cursor.y==checkbox.frame.origin.y && a==checkbox.tag)
{
[[checkbox viewWithTag:chkcnt] removeFromSuperview];
[chkTag removeObjectAtIndex:chkcnt];
}
}
}
しかし、それは最後の UIButton だけを削除しています。それも、カーソルがその現在の位置にあるときだけです..正しい考えを教えてください