小编Fat*_*dle的帖子

如何向UITableViewCell添加手势?

我想为其中的每个单元格添加一个轻击手势,以UITableView编辑其中的内容.添加手势的两种方式是代码或故事板.我试过了两次但他们失败了.

我可以通过故事板拖放为表格中的每个单元格添加手势吗?它似乎只为第一个单元添加手势.在代码中添加手势,我写了类似的东西,

addGestureRecognizer(UITapGestureRecognizer(target: self,action:#selector(MyTableViewCell.tapEdit(_:))))
Run Code Online (Sandbox Code Playgroud)

要么

addGestureRecognizer(UITapGestureRecognizer(target: self, action:"tapEdit:"))
Run Code Online (Sandbox Code Playgroud)

都工作.但我想让UITableViewController这个手势处理,因为它对数据源做了一些事情.我如何写我的目标和行动?

编辑:

addGestureRecognizer(UITapGestureRecognizer(target: MasterTableViewController.self, action:#selector(MasterTableViewController.newTapEdit(_:)))
Run Code Online (Sandbox Code Playgroud)

它引发一个错误说,无法识别的选择器发送到类0x106e674e0 ...

uitableview uigesturerecognizer ios swift

10
推荐指数
2
解决办法
3万
查看次数

没有 setTranslation 的平移手势奇怪的行为

我的代码:

@IBAction func handlePan(gesture: UIPanGestureRecognizer) {
    let transition = gesture.translationInView(self.view)
    switch gesture.state{
    case .Changed:
        if let view = gesture.view {
            view.center = CGPoint(x: view.center.x + transition.x, y: view.center.y + transition.y)
        }
        gesture.setTranslation(CGPointZero, inView: self.view)

    default:break
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我可以在屏幕上拖动一个大按钮。一切正常,直到我注释掉gesture.setTranslation(CGPointZero, inView: self.view)

我以为一行代码只会告诉应用程序记住屏幕上按钮的最后位置并下次从那里移动,但是......

然后我在模拟器上再次运行该项目,当我单击该按钮并尝试移动一点时,该按钮只是朝同一方向飞行并消失在屏幕外,为什么?

gesture ios swift

0
推荐指数
1
解决办法
787
查看次数

如何在一个类(swift)中打包定制的UIAlertController?

我的iOS应用程序需要一组具有类似功能的自定义警报.我可以将它们打包在一个类中,所以我不必在每个UIViewController中复制粘贴吗?

func displayAlert(msg:String, handler: (UIAlertAction) -> Void?{...} 
func successMsg (msg: String){...}  
func failMsg(msg: String){...}
Run Code Online (Sandbox Code Playgroud)

我试图将它们打包到UIViewController的子类(AlertViewController)中,但之后出现了运行时错误:"尝试在<... UIAlertController ...>上显示<... UIAlertController ...>,其视图不在窗口层层叠叠!"

myViewController中的代码:

@IBAction func leave() {
    let date = getDate()
    let datePresent = dateForPresent()
    if stID == nil || name == nil {
        return
    } else {
        alert.displayAlert("\(datePresent)"){action in
            self.request.getResult(self.request.leavePara(self.stID!, date: date, name: self.name!) ){ (result) in
                dispatch_async(dispatch_get_main_queue(), {
                    let flag = result["result","out_Flag"].int
                    print(result)
                    let msg = result["result","out_nszRtn"].string!
                    if flag == 0 {
                        self.alert.successMsg(msg){ action in
                            self.performSegueWithIdentifier("personUnwind", sender: self)
                        }
                    }else { …
Run Code Online (Sandbox Code Playgroud)

ios swift uialertcontroller

-2
推荐指数
1
解决办法
1129
查看次数