0
내 ViewController의 아래쪽 툴바와 그 위에있는 TableView가 있습니다. 도구 모음에는 중간에 날짜 레이블이 있고 왼쪽과 오른쪽에 다음 및 이전 단추가 있습니다. 선택한 날짜에 따라 tableview 내용이 변경됩니다.UITableViewCell의 레이블에서 제스처 인식기를 제거하려면 어떻게해야합니까?
이제 TableViewCell에 UILabel이 포함되어 있습니다. 선택한 날짜가 오늘 인 경우에만 제스처를 레이블에 추가하고 싶습니다.
그래서 나는 내 휴대 업데이트 방법UITapGestureRecognizer gesture = new UITapGestureRecognizer();
gesture.AddTarget(() => HandleValueLabelClick());
if (source.parentController.selectedDateTime.Day == DateTime.Now.Day)
{
AddEditAction();
ValueLabel.AddGestureRecognizer(gesture);
}
else
{
ValueLabel.RemoveGestureRecognizer(gesture);
}
에 쓴하지만 제스처는 선택한 날짜가 오늘이 아닌 경우, 작동하지 않습니다 제거합니다. 어떤 도움에 감사드립니다 ..
이편집 :
public partial class ProgramCalendarCell : UITableViewCell
{
NSIndexPath indexPath;
ProgramVitalsCalendarTableSource source;
ProgramVital vital;
ProgramVitalCalendar calendar;
public ProgramCalendarCell (IntPtr handle) : base (handle)
{
}
public void UpdateCell(ProgramVital vital, ProgramVitalCalendar calendar, NSIndexPath indexPath, ProgramVitalsCalendarTableSource source)
{
this.source = source;
this.indexPath = indexPath;
this.vital = vital;
this.calendar = calendar;
InitVitalName();
InitVitalValue();
NewValueTextField.Hidden = true;
ValueLabel.Hidden = false;
UIView separatorLine = new UIView(new CoreGraphics.CGRect(0, 44, 1200f, 0.5f));
separatorLine.BackgroundColor = AZConstants.SeparatorColor;
ContentView.AddSubview(separatorLine);
UITapGestureRecognizer gesture = new UITapGestureRecognizer();
gesture.AddTarget(() => HandleValueLabelClick());
if (source.parentController.selectedDateTime.Day == DateTime.Now.Day)
{
AddEditAction();
ValueLabel.AddGestureRecognizer(gesture);
}
else
{
ValueLabel.RemoveGestureRecognizer(gesture);
}
}
void InitVitalName()
{
string name = vital.vitalName;
if (!String.IsNullOrEmpty(vital.unitName))
name += " (" + System.Net.WebUtility.HtmlDecode(vital.unitName) + ")";
VitalNameLabel.Text = name;
}
void InitVitalValue()
{
string value = "";
string color = "";
if (calendar != null)
{
value = calendar.values[0].value;
color = calendar.values[0].color;
}
UIHelper.SetVitalValueTileBackGround(ValueLabel, value, color);
}
void HandleValueLabelClick()
{
ValueLabel.Hidden = true;
NewValueTextField.Hidden = false;
NewValueTextField.BecomeFirstResponder();
}
void AddEditAction()
{
ValueLabel.UserInteractionEnabled = true;
NewValueTextField.ShouldReturn = (textField) =>
{
textField.ResignFirstResponder();
ValueLabel.Hidden = false;
NewValueTextField.Hidden = true;
Console.WriteLine("Row: " + indexPath.Row);
return true;
};
UIToolbar toolbar = new UIToolbar(new RectangleF(0.0f, 0.0f, (float)UIScreen.MainScreen.Bounds.Size.Width, 44.0f));
toolbar.BarTintColor = AZConstants.PrimaryColor;
toolbar.TintColor = UIColor.White;
toolbar.Items = new UIBarButtonItem[]{
new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
new UIBarButtonItem(UIBarButtonSystemItem.Done, delegate {
Console.WriteLine("Row: " + indexPath.Row);
SaveReading();
NewValueTextField.ResignFirstResponder();
})
};
toolbar.BarTintColor = AZConstants.PrimaryColor;
toolbar.TintColor = UIColor.White;
toolbar.Translucent = true;
toolbar.SizeToFit();
NewValueTextField.InputAccessoryView = toolbar;
int vId = Int32.Parse(vital.vitalId);
if (vId == 20 || vId == 5 || vId == 496)
NewValueTextField.KeyboardType = UIKeyboardType.DecimalPad;
else
NewValueTextField.KeyboardType = UIKeyboardType.NumberPad;
}
async void SaveReading()
{
var hud = UIHelper.GetProgressHud(source.parentController.View, "");
hud.Show(animated: true);
Status status = await VitalHelper.postVitalValue(Constants.__IOS__, vital, NewValueTextField.Text, 0,
DateTime.Now.ToString("MM/dd/yyyy"), DateTime.Now.ToString("hh:mm tt"), "");
if (status.status)
{
source.parentController.FetchAndDisplayVitalValues();
}
else
{
new UIAlertView("Error", status.message, null, "OK", null).Show();
}
hud.Hide(animated: true, delay: 0);
}
}
오늘은 아니더라도 단순히 조치를 취하지 않으시겠습니까? 그렇지 않으면 탭 제스처를 언제 추가할까요? 왜냐하면 어디에서, 셀이 재사용되기 때문에'HandleValueLabelClick()'을 여러 번 호출 할 수 있기 때문입니다. – Larme
처음에는 else 부분을 가지고 있지 않습니다. 여전히 같은 효과가있었습니다. – HeisenBerg
@Larme 전체 코드를 게시했습니다. 참조하십시오. – HeisenBerg