我为UITableView制作了一个自定义的section-header,其中包括一些控件,如分段控件,UIImageView等.它成功出现了,但它不具有可调性,因此我无法与其控件进行交互.
我需要知道如何才能使这个标题视图可选?
Dha*_*nia 25
使用UITableViewDelegate无法做到这一点.
您必须向yourHeaderView添加UITapGestureRecognizer,如:
UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gestureHandler:)];
[singleTapRecognizer setDelegate:self];
singleTapRecognizer.numberOfTouchesRequired = 1;
singleTapRecognizer.numberOfTapsRequired = 1;
[yourHeaderView addGestureRecognizer:singleTapRecognizer];
-(void) handleGesture:(UIGestureRecognizer *)gestureRecognizer; //do in this method whatever you want
Run Code Online (Sandbox Code Playgroud)
对于Swift 3.0
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(YOURVIEWCONTROLLER.TapGestureRecognizer(_:)))
yourHeaderView.addGestureRecognizer(tapGesture)
func TapGestureRecognizer(gestureRecognizer: UIGestureRecognizer) {
//do your stuff here
}
Run Code Online (Sandbox Code Playgroud)
Swift> = 4.0
添加 继承的UIGestureRecognizerDelegate类引用
let tap = UITapGestureRecognizer(target: self, action:#selector(self.handleTap(_:)))
tap.delegate = self
self.view.addGestureRecognizer(tap)
@objc func handleTap(_ sender: UITapGestureRecognizer) {
//Do your work
}
Run Code Online (Sandbox Code Playgroud)
可能会有所帮助.
快乐的编码.
如果您需要知道点击部分的索引,您可以使用以下模式(Swift 4):
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 44))
// Configure your view here
// ...
let tapGestureRecognizer = UITapGestureRecognizer(
target: self,
action: #selector(headerTapped(_:))
)
view.tag = section
view.addGestureRecognizer(tapGestureRecognizer)
return view
}
@objc func headerTapped(_ sender: UITapGestureRecognizer?) {
guard let section = sender?.view?.tag else { return }
// Use your section index here
// ...
}
Run Code Online (Sandbox Code Playgroud)
这对我有用:
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let v = UITableViewHeaderFooterView()
v.textLabel?.text = "Header Text"
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap))
tapRecognizer.delegate = self
tapRecognizer.numberOfTapsRequired = 1
tapRecognizer.numberOfTouchesRequired = 1
v.addGestureRecognizer(tapRecognizer)
return v
}
func handleTap(gestureRecognizer: UIGestureRecognizer)
{
print("Tapped")
}
Run Code Online (Sandbox Code Playgroud)
创建一个用作剖面头视图的自定义视图并实现该方法
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event,当您的手指点击它时它将被调用。
| 归档时间: |
|
| 查看次数: |
31049 次 |
| 最近记录: |