gpt4 book ai didi

ios - UIMenuController 不显示菜单

转载 作者:行者123 更新时间:2023-11-28 05:31:11 30 4
gpt4 key购买 nike

我是 iOS 的新手。我正在尝试显示一个弹出菜单,但我无法显示菜单。请帮忙。这是我的代码:

//DidLoad function to initialize UILongPRessGestureRecognizer

override func viewDidLoad()
{
super.viewDidLoad()
var longprss : UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: Selector("display:"))
self.tableView.addGestureRecognizer(longprss)
}



//Bool function Can become first responder set to true

override func canBecomeFirstResponder() -> Bool {
return true
}

//become first responser set to true
override func becomeFirstResponder() -> Bool {
return true
}
//action handler of longPressGesture

func display(gesture: UILongPressGestureRecognizer)
{

self.becomeFirstResponder()
println("Is first responder")

var menu = UIMenuController.sharedMenuController()
var deleteItem = UIMenuItem(title: "Delete", action: Selector("deleteLine"))
var editItems = UIMenuItem(title: "Edit", action: Selector("editrow"))
menu.menuItems = [deleteItem ,editItems]

menu.setTargetRect(CGRect(x: 100, y: 80, width: 100, height: 50), inView: UIView())
menu.setMenuVisible(true, animated: true)

}

//perform action method
override func tableView(tableView: UITableView, performAction action: Selector, forRowAtIndexPath indexPath: NSIndexPath, withSender sender: AnyObject!) {

}
//can perform action method.

override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
if action == Selector("Delete")
{
return true
}
return false
}

请帮我显示弹出菜单。

提前谢谢你。

最佳答案

//View controller class which is implementing TableViewCellDelegate
//Make sure you do followng
//subclass UITableViewCell using class name TableViewCell which has delegate
//you link UITableViewCell in ViewController class with TableViewCell in Custom Class column in interface builder(storyboard)
//In TableViewCell cell identifier you give name as Cell.


class ViewController: UITableViewController,TableViewCellDelegate {

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.



}

// tableview delegates
override func numberOfSectionsInTableView(tableView: UITableView) -> Int // Default is 1 if not
{

return 1;
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{

var cell = tableView.dequeueReusableCellWithIdentifier("Cell") as? TableViewCell


if cell == nil {
cell = TableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "Cell")
}
cell?.delegate=self;
cell?.textLabel?.text="Cell text"
return cell!

}

func tableCellSelected(tableCell: UITableViewCell)
{

var longprss : UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: Selector("display:"))
tableCell.addGestureRecognizer(longprss)

}
//end tableview delegate


// menu delegates
override func canBecomeFirstResponder() -> Bool {
return true
}



override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool
{
println(action);
if(action == Selector("deleteLine:") || action == Selector("editRow:"))
{
return true;

}
else
{
return false;
}
}

func deleteLine(sender: AnyObject?) {

println("delete line")

}

func editRow(sender: AnyObject?) {

println("edit row");
}

//end menu delegate

//action handler of longPressGesture

func display(gesture: UILongPressGestureRecognizer)
{

gesture.view?.becomeFirstResponder()

println("Is first responder")
var menu = UIMenuController.sharedMenuController()
var deleteItem = UIMenuItem(title: "Delete", action: Selector("deleteLine:"))
var editItems = UIMenuItem(title: "Edit", action: Selector("editRow:"))
menu.menuItems = [deleteItem ,editItems]

menu.setTargetRect(CGRect(x: 30, y: 8, width: 100, height: 50), inView: gesture.view!)
menu.setMenuVisible(true, animated: true)

}



override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}




}

//This is subclass of UITableViewCell

protocol TableViewCellDelegate
{
func tableCellSelected( var tableCell : UITableViewCell)
}


class TableViewCell: UITableViewCell {

var delegate : TableViewCellDelegate?

override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}

override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
if((self.delegate) != nil)
{
delegate?.tableCellSelected(self);
}
// Configure the view for the selected state
}

}

关于ios - UIMenuController 不显示菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28234921/

30 4 0