使用TextField显示弹出框-键盘导致闪烁

时间:2020-03-12 12:50:43

标签: keyboard ios13 uipopoverpresentationcontroller

我想知道是否有人使用PopoverPresentationController遇到了奇怪的闪烁/动画。当有textField成为第一响应者时,将发生闪烁。弹出窗口似乎几乎在现有弹出窗口的顶部重新打开。

步骤/应用细分:

MainViewController-具有表视图的UIViewController

public override void ViewDidLoad() {
  base.ViewDidLoad();
  source = new TableSource(this);
  tableView = new UITableView(CoreGraphics.CGRect.Empty, UITableViewStyle.Grouped);
  tableView.TranslatesAutoresizingMaskIntoConstraints = false;
  tableView.RegisterClassForCellReuse(typeof(TableViewCell), "test");
  tableView.Source = source;
  View.AddSubview(tableView);

  source.Source.Add(new List<string> { 
    "Section 1, text Element 0",
    "Section 1, text Element 1",
    "Section 1, text Element 2",
    "Section 1, text Element 3",
    "Section 1, text Element 4",
    "Section 1, text Element 5",
    "Section 1, text Element 6",
   });

  tableView.TopAnchor.ConstraintEqualTo(View.TopAnchor).Active = true;
  tableView.LeftAnchor.ConstraintEqualTo(View.LeftAnchor).Active = true;
  tableView.RightAnchor.ConstraintEqualTo(View.RightAnchor).Active = true;
  tableView.BottomAnchor.ConstraintEqualTo(View.BottomAnchor).Active = true;
}

PopoverView-具有简单TextField的UIViewController

public class PopoverView: UIViewController {
  public override void ViewDidLoad() {
    base.ViewDidLoad();
    UITextField field = new UITextField(new CGRect(20,10, 150, 44));
    field.BackgroundColor = UIColor.White;
    View.AddSubview(field);
  }
}



1)单击一个单元格

public override void RowSelected(UITableView tableView, NSIndexPath indexPath) {
  PopoverView view = new PopoverView();
  view.View.BackgroundColor = UIColor.LightGray;
  view.ModalPresentationStyle = UIModalPresentationStyle.Popover;
  view.PopoverPresentationController.SourceRect = new CoreGraphics.CGRect(0, 40, 100, 100);
  view.PopoverPresentationController.SourceView = tableView;
  view.PreferredContentSize = new CoreGraphics.CGSize(300, 1000);
  controller.PresentViewController(view, true, null);
}

2)启动弹出窗口
3)点击textField

如果我在RowSelected中更改以下行:

view.PopoverPresentationController.SourceRect = new CoreGraphics.CGRect(0, 40, 100, 100);

收件人:

view.PopoverPresentationController.SourceRect = new CoreGraphics.CGRect(0, 0, 100, 100);

闪烁停止,但是如果弹出窗口链接到屏幕上不同位置的tableview单元格,则无济于事。

0 个答案:

没有答案