我刚刚发现如果我做以下事情:
UIPickerView在我的视图中的按钮然后它还没有选择最后一个项目.
我试图通过在didSelectRow方法被触发时简单地输出到控制台,并且当车轮稳定在最后一个项目时它会触发.
我可以检测到车轮仍然在滚动,这样我可以延迟检查它是否有选定值,直到它稳定下来?
如果重要的是,我正在使用MonoTouch进行编程,但如果您有一个代码示例,我可以很好地阅读Objective-C代码以重新实现它.
我正在尝试向我视图中的现有按钮添加手势(滑动)功能,但我无法弄清楚如何将滑动附加到按钮的区域.
所需的效果是有一个按钮,我可以按下以及滑动以产生不同的结果.到目前为止,我正在实现手势的方式将其应用于我的整个视图而不仅仅是按钮.
我觉得这很简单,但它已经让我逃脱了几天 - 我可能只是在寻找错误的东西.
(我将'@IBOutlet var swipeButton:UIButton!'分配给我的按钮BTW)
代码如下:
class ViewController: UIInputViewController {
@IBOutlet var swipeButton: UIButton!
let swipeRec = UISwipeGestureRecognizer()
override func viewDidLoad() {
super.viewDidLoad()
self.loadInterface()
var swipeButtonDown: UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: "ButtonDown")
swipeButtonDown.direction = UISwipeGestureRecognizerDirection.Down
self.view.addGestureRecognizer(swipeButtonDown)
}
@IBAction func buttonPressed(sender: UIButton) {
var proxy = textDocumentProxy as UITextDocumentProxy
proxy.insertText("button")
}
func buttonDown(){
var proxy = textDocumentProxy as UITextDocumentProxy
proxy.insertText("swipe")
}
}
Run Code Online (Sandbox Code Playgroud) 我试图检测 AppleWatch 上所有四个方向的滑动。但是我不清楚如何为我插入故事板的 WKSwipeGestureRecognizer 的方向分配许多值。我试过:
swiper.direction = [.right , .left , .up , .down]
Run Code Online (Sandbox Code Playgroud)
编译器有趣地接受了这一点,与使用按位 | 不同,但是,使用此配置,功能:
@IBAction func swipe(_ sender: Any) {
switch swiper.direction {
case WKSwipeGestureRecognizerDirection.right:
print("Swiped right")
case WKSwipeGestureRecognizerDirection.down:
print("Swiped down")
case WKSwipeGestureRecognizerDirection.left:
print("Swiped left")
case WKSwipeGestureRecognizerDirection.up:
print("Swiped up")
default:
break
}
}
Run Code Online (Sandbox Code Playgroud)
很少被调用,当它是 swiper.direction 时,总是 .right。
Apple 非常神秘:https : //developer.apple.com/reference/watchkit/wkswipegesturerecognizer/1650828-direction 说:
“此属性的默认值是正确的。您可以指定多个方向以使用相同的手势识别器跟踪多个方向的滑动。”
不透露如何。
我正在编写代码,在视图上向上或向下移动我的两个手指以改变某些状态.代码如下:
UISwipeGestureRecognizer *aSwipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];
[aSwipeGesture setDirection:UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown];
aSwipeGesture.numberOfTouchesRequired = 2;
[self.View addGestureRecognizer:aSwipeGesture];
- (void)swipeGesture:(UISwipeGestureRecognizer *)sender {
NSLog(@"Swipe received.");
if (sender.direction==UISwipeGestureRecognizerDirectionUp) {
NSLog(@"swipe up");
} else if (sender.direction==UISwipeGestureRecognizerDirectionDown) {
NSLog(@"swipe down");
}
}
Run Code Online (Sandbox Code Playgroud)
然而,我可以收到的唯一打印日志是Swipe收到,如下所示.我无法收到刷卡或向下滑动的消息,我是否遗漏了什么?谢谢
ViewController.m:228 Swipe received.
ViewController.m:228 Swipe received.
ViewController.m:228 Swipe received.
ViewController.m:228 Swipe received.
ViewController.m:228 Swipe received.
ViewController.m:228 Swipe received.
Run Code Online (Sandbox Code Playgroud)
更新:我必须用两根手指才能完成滑动动作.
我有一个带有嵌入式导航控制器的视图控制器,我希望呈现的控制器能够在任何地方滑动以返回到根控制器。这怎么可能通过使用 SwipeGesture 或扩展导航控制器?
另请注意,所呈现的控制器是一个表格视图并且具有单元格笔尖。
我目前有一个单页 swift 应用程序(适用于 iOS)在自定义视图控制器上运行。在该视图控制器中,我嵌入了另一个自定义 UIView 来显示一些内容/处理一些用户交互。
我想知道是否有一种方法可以拦截在自定义视图控制器中注册的 UISwipe,并且如果它发生在嵌入视图上,则可以快速忽略它。我知道对于点击,我可以将视图控制器设置为点击手势识别器的委托,并执行如下操作:
// not exact syntax
func gestureRecognizer(touch){
if (touch.view == self.embeddedView || (touch.view.isDescendantOf(embeddedView))!){
return false
}
return true
}
Run Code Online (Sandbox Code Playgroud)
但是我找不到任何与滑动功能相同的功能。有人能指出我正确的方向吗?
ios ×4
swift ×4
xcode ×3
apple-watch ×1
swipe ×1
uipickerview ×1
uitableview ×1
watchkit ×1
xamarin.ios ×1