UIAlertController没有被解雇

时间:2017-08-15 18:01:54

标签: xamarin.ios

在我的Xamarin iOS应用程序中,我有一个显示警告对话框的静态帮助程序方法。如果用户仍未按下OK按钮,此对话框需要在几秒钟后自动消失。以下是简化的代码段:

numba.njit

稍后,当计时器到期时:

import numba as nb
import numpy as np

@nb.njit
def _interpolate_one(x, y, x0):
    if x0 < x[0]:
        return y[0]
    elif x0 > x[-1]:
        return y[-1]
    else:
        for i in range(len(x) - 1):
            if x[i] <= x0 <= x[i + 1]:
                x1, x2 = x[i], x[i + 1]
                y1, y2 = y[i], y[i + 1]

                return y1 + (y2 - y1) / (x2 - x1) * (x0 - x1)

@nb.njit
def _interpolate_many(x, y, x0):
    result = np.zeros(x0.size, dtype=np.float_)
    for i in range(x0.size):
        result[i] = _interpolate_one(x, y, x0[i])
    return result

class Lookup:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def interp(self, x0):
        if isinstance(x0, (float, int)):
            result = _interpolate_one(self.x, self.y, x0)
        elif isinstance(x0, np.ndarray):
            result = _interpolate_many(self.x, self.y, x0)
        else:
            raise TypeError("`interp` method can only accept types of float, int, or ndarray.")
        return result

虽然确实调用了方法 UIAlertController dlg = UIAlertController.Create(title, text, UIAlertControllerStyle.Alert); dlg.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Cancel, null); UIApplication.SharedApplication.KeyWindow.RootViewController. PresentViewController(dlg, true, null); ,但对话框不会从屏幕上消失。

我甚至尝试过调用 t.Elapsed += (s, e) => { dlg.DismissViewController(true, null); }; ,但这也无济于事。

有人可以帮我理解我错过的是什么吗?问候。

1 个答案:

答案 0 :(得分:3)

事件 Elapsed 中的代码不在主线程上。

在主线程上调用它。

t.Elapsed += (s, e) =>
{
   InvokeOnMainThread(() => {
       dlg.DismissViewController(true, null);
   });
};