see*_*r12 8 iphone uiview ipad
我正在按下按钮,启动一个简单UIView的textField- 让我们称呼它orderSetNameView.我希望将此视图设为模态,但不使用
[UIViewController presentModalViewContoller:animated:].
我似乎可以简单地设定textInputView.exclusiveTouch = YES实现这一目标.
Apple文档说exclusiveTouch:
一个布尔值,指示接收器是否专门处理触摸事件.如果是,则接收器阻止同一窗口中的其他视图接收触摸事件; 否则,它没有.默认值为NO.
我假设"相同的窗口"意味着相同的UIWindow,其中我只有一个.
问题是,当我实例化我的orderSetNameView,将其添加为子视图,并设置exclusiveTouch = YES,触摸事件发生在我的应用程序的所有其他视图中,即其他视图中的触摸事件未按预期阻止.
// ....
[self.view addSubview:self.orderSetNameView];
[self.orderSetNameView openWithAnimationForAnimationStyle:kMK_AnimationStyleScaleFromCenter];
}
// Set as modal
self.orderSetNameView.exclusiveTouch = YES;
Run Code Online (Sandbox Code Playgroud)
不应该orderSetNameView阻止所有其他视图中的触摸事件?我错过了什么?
see*_*r12 14
来自Apple开发者论坛:
exclusiveTouch仅在独占触摸视图中有活动触摸的时间内阻止其他视图中的触摸.也就是说,如果您在独家触摸视图中放下手指,则在您抬起第一根手指之前,触摸将无法在其他视图中启动.如果exclusiveTouch视图中当前没有触摸,则不会阻止在其他视图中启动触摸.
要真正使这个视图成为屏幕上唯一可以接收触摸的东西,您需要在其他所有内容之上添加另一个视图以捕获其余的触摸,或者在层次结构中的某个位置(或UIWindow本身)子类化视图并覆盖hitTest:withEvent:以便在文本视图可见时始终返回文本视图,或者返回nil以用于不在文本视图中的触摸.
| 归档时间: |
|
| 查看次数: |
8698 次 |
| 最近记录: |