Вы можете использовать UIGestureRecognizerDelegate
, чтобы заставить UITapGestureRecognizer
работать в соответствии с обычным UITextView
поведением:
class TestViewController: UIViewController {
@IBOutlet weak var textView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tap))
tapGestureRecognizer.delegate = self
textView.addGestureRecognizer(tapGestureRecognizer)
}
@objc private func tap() {
print("tap")
}
}
extension TestViewController: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
Согласно предложению Руны я реализовал основной TraceListener, которые производят к log4net:
public class Log4netTraceListener : System.Diagnostics.TraceListener
{
private readonly log4net.ILog _log;
public Log4netTraceListener()
{
_log = log4net.LogManager.GetLogger("System.Diagnostics.Redirection");
}
public Log4netTraceListener(log4net.ILog log)
{
_log = log;
}
public override void Write(string message)
{
if (_log != null)
{
_log.Debug(message);
}
}
public override void WriteLine(string message)
{
if (_log != null)
{
_log.Debug(message);
}
}
}
Я не знаю, поддерживает ли log4net это, но Вы могли бы реализовать свой собственный приемник трассировки, который сделал это.
TraceListener не имеет слишком многих методом, который должен быть реализован и все, что Вы сделали бы, должен передать значения log4net, таким образом, это должно быть легко сделать.
Для добавления пользовательского приемника трассировки Вы или изменили бы свой app.config/web.config, или Вы добавите его в коде с помощью Trace.Listeners.Add(new Log4NetTraceListener());